Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python cv2.imread和cv2.imshow返回全零和黑色图像_Python - Fatal编程技术网

Python cv2.imread和cv2.imshow返回全零和黑色图像

Python cv2.imread和cv2.imshow返回全零和黑色图像,python,Python,我已经使用PPT创建了一个*.png图像 我想使用cv2python阅读并显示它。但是cv2.imshow给了我一张完全黑色的图像,上面什么也没有。这是我的代码,我只是不知道哪里出错了: img = cv2.imread(r"C:/Users/.../Test_shapes.png") print img.max(),img.shape cv2.imshow('color_image',img) cv2.waitKey() p、 s.img.shape返回正确的形状(8811803,3)。但是

我已经使用PPT创建了一个*.png图像

我想使用
cv2python
阅读并显示它。但是
cv2.imshow
给了我一张完全黑色的图像,上面什么也没有。这是我的代码,我只是不知道哪里出错了:

img = cv2.imread(r"C:/Users/.../Test_shapes.png")
print img.max(),img.shape
cv2.imshow('color_image',img)
cv2.waitKey()
p、 s.
img.shape
返回正确的形状(8811803,3)。但是
img.max()
返回0


抱歉,我没有足够的声誉在这里添加图像。但是使用Matlab,我的*.png可以被成功读取,最大值为108。

当你在白色画布上画一些黑线时,通常会发生这种情况。大多数应用程序导出具有透明背景的PNG,即使可见画布是白色的

结果是图像仅由黑色像素和透明像素组成。那些透明的,通常也有一个0.0.0的RGB值——所以如果我们只看RGB值,一切都是黑色的

例如,在inkscape中,您可以在图形下方放置一个白色矩形,使PNG导出器真正保存一些白色背景

默认的
cv2.imread(“file.png”,cv2.imread\u COLOR)
cv2.imread(“file.png,cv2.imread\u GRAYSCALE)
忽略透明度,只查看RGB值。这是不好的,因为完全透明像素的RGB值没有意义

只有
cv2.imread(“file.png”,cv.imread\u未更改)
才能访问透明频道。我们提取alpha,将其反转,然后将其添加回图像。这将在白色背景上模拟alpha:

img = cv2.imread("file.png", cv.IMREAD_UNCHANGED)
if img.shape[2] == 4:     # we have an alpha channel
  a1 = ~img[:,:,3]        # extract and invert that alpha
  img = cv2.add(cv2.merge([a1,a1,a1,a1]), img)   # add up values (with clipping)
  img = cv2.cvtColor(img, cv2.COLOR_RGBA2RGB)    # strip alpha channel

cv2.imshow('aa', img); cv2.waitKey(0); cv2.destroyAllWindows() 

cv2似乎根本不是透明胶片的朋友。无论是
cv.add()
,还是
cv2.addWeighted()
都不能轻松应用alpha通道


对不起,我忍不住在5年后挖出了这个没有答案的僵尸。当alpha通道中只有信息,而rgb通道和alpha通道中都有信息时,我的解决方案工作得很好。

如果您将图像发布到第三方网页,我们可以通过编辑将其发布到您的问题中。您在何处声明了
灰色
?抱歉,这是一个打字错误。“灰色”应为“img”。我已经纠正了它。我用一个*.jpg图像尝试了代码,效果很好!为什么*.png不起作用???