OpenCV 未按预期读取图像

OpenCV not reading image as expected

提问人:Comycos 提问时间:11/14/2023 最后编辑:Christoph RackwitzComycos 更新时间:11/14/2023 访问量:53

问:

我有一个PNG图像,它应该看起来像这样:

enter image description here

但相反,它看起来像这样:

enter image description here enter image description here

我使用以下代码来读取和绘制它:

img = cv2.imread(str(img_path), cv2.IMREAD_UNCHANGED)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

plt.imshow(img)
plt.show()

使用 openCV 绘图会得到同样的结果:

image = cv2.imread('1.png', cv2.IMREAD_UNCHANGED)
cv2.imshow('image window', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

为什么会这样?我该如何解决?

python opencv 透明度 alpha alpha-transparency

评论

1赞 antokhio 11/14/2023
您很可能缺少 alpha 信息,有时 alpha 设置为 0 的像素仍然具有 rgb 颜色
0赞 Comycos 11/14/2023
@antokhio他们应该在那里,对吧?我正在阅读cv2. IMREAD_UNCHANGED
4赞 Mark Setchell 11/14/2023
cv2.imshow()无法显示透明度,可以显示它,但您删除了它!尝试。另外,查看您有多少个频道。plt.imshow()cv2.COLOR_BGRA2RGBAprint(image.shape)
1赞 Christoph Rackwitz 11/14/2023
Alpha 通道并非完全不透明。OP 的第一张图片只是一个插图,棋盘背景暗示了 alpha 通道。OP 尚未提供数据来调试此情况。最小可重复示例
2赞 Christoph Rackwitz 11/14/2023
图片中的@Comycos透明区域都允许具有任意颜色信息,因为它无论如何都是不可见的。这就是你所看到的。提供实际数据,然后我们可以继续调查。

答: 暂无答案