我不确定为什么会发生这种情况,但我无法使用imread()加载图像。我能够在绘画中打开该图像,并在保存该图像后,正在加载和显示图像。我正在使用Jupyter笔记本。
import os
import cv2
import numpy as np
from matplotlib import pyplot as plt
%matplotlib inline
def displayImage(image):
plt.imshow(image)
plt.show()
image = cv2.imread('path/to/image')
displayImage(image)
输出
预期产出:
答案 0 :(得分:2)
这是因为您的图片处于RGBA
模式(您的背景是透明的)。
所以你需要在RGBA
模式下阅读你的图像:
image = cv2.imread('path/to/image.png',-1)
或:
from scipy.ndimage import imread
rgba = imread('path/to/image.png', mode='RGBA')
结果:
答案 1 :(得分:1)
问题是您的图像不包含任何非零的红色,绿色或蓝色像素,它完全是黑色的。查看如何使用"@ @ 6 L"
显示它的唯一原因是因为它有一个遮罩黑色的alpha /透明度通道并显示白色PNG背景颜色。
如果您使用ImageMagick identify
查看它,您会看到:
identify -verbose a.png | more
Image: a.png
Format: PNG (Portable Network Graphics)
Mime type: image/png
Class: DirectClass
Geometry: 203x50+0+0
Resolution: 37.79x37.79
Print size: 5.37179x1.3231
Units: PixelsPerCentimeter
Colorspace: sRGB
Type: Bilevel
Base type: Undefined
Endianess: Undefined
Depth: 8-bit
Channel depth:
Red: 1-bit
Green: 1-bit
Blue: 1-bit
Alpha: 8-bit
Channel statistics:
Pixels: 10150
Red:
min: 0 (0)
max: 0 (0) <--- Brightest Red is zero
mean: 0 (0)
standard deviation: 0 (0)
kurtosis: -3
skewness: 0
entropy: 0
Green:
min: 0 (0)
max: 0 (0) <--- Brightest Green is zero
mean: 0 (0)
standard deviation: 0 (0)
kurtosis: -3
skewness: 0
entropy: 0
Blue:
min: 0 (0)
max: 0 (0) <--- Brightest Blue is zero
mean: 0 (0)
standard deviation: 0 (0)
kurtosis: -3
skewness: 0
entropy: 0
Alpha:
min: 0 (0)
max: 255 (1) <--- Alpha channel is only one with info
mean: 16.477 (0.0646159)
standard deviation: 58.73 (0.230314)
kurtosis: 10.7342
skewness: 3.50997
entropy: 0.128008
...
...
Background color: white <--- Background is white
...
...
答案是使用cv2.IMREAD_UNCHANGED
阅读所有四个频道,并使用第四个/ alpha频道:
def read_transparent_png(filename):
image_4channel = cv2.imread(filename, cv2.IMREAD_UNCHANGED)
alpha_channel = image_4channel[:,:,3]
rgb_channels = image_4channel[:,:,:3]
从here中提取的代码。
答案 2 :(得分:0)
并检查实际加载的数据。使用image.shape()检查大小,查看最大/最小/平均值,或者如果使用spyder(强烈推荐),请查看变量查看器中的数据。
PS。对于单个显示项目,不需要plt.show()
命令
答案 3 :(得分:0)
加载图片后使用:
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)