OpenCV 读取不可见图像

OpenCV reads invisible image

我用 gimp 编辑了一个简单的 png 图像,但它使 t运行sparent 背景变黑。所以我尝试撤消它,但没有任何改变。然后我完全删除了所有像素(ctrl+A 和删除)——这使图像完全空白(白色)。但后来我用 OpenCV (python, ubuntu 16.04) 读了它,我仍然能看到那张旧照片!

这是我用来读取图像的简单代码。如您所见,它完全是空白的(白色)。

但是后来我运行代码,我仍然可以看到旧图片!

在这里你可以看到 - 它完全是空的。我用 Firefox、Gimp、默认 ubuntu 图片查看器、windows 照片查看器打开它——相同的空白图片。

所以我决定尝试一些东西,然后我在那张图片上用 Gimp 画了画:

我再次 运行 相同的代码:

撤消后问号图像恢复原状。我想 - 这可能是一些软件错误 - 我重新启动 - 同样。然后我把'nothing.png'复制到Win10。相同的代码 - 相同的结果。图片大小约为 449kB。这里是:

这到底是怎么回事?

GIMP 没有擦除 RGB 数据,它只是将 alpha 通道设置为 0。

这就够了...除非您忽略 alpha 通道。

OpenCV 忽略 alpha 通道...它只是另一个通道,一点也不特别。 OpenCV 可以读取和写入 RGBA 数据,您可以像使用任何其他通道一样使用 alpha 通道。只是 imshow 的显示会忽略 alpha 通道并显示 RGB 数据。