【问题标题】:OpenCV reads invisible imageOpenCV 读取不可见图像
【发布时间】:2021-09-18 15:20:39
【问题描述】:

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

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

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

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

所以我决定尝试一下,我用 Gimp 在那张照片上画了:

我再次运行相同的代码:

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

这到底是怎么回事?

【问题讨论】:

    标签: opencv alpha opencv-python


    【解决方案1】:

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

    这就够了……除非你忽略阿尔法通道。

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

    【讨论】:

    • 我明白了。所以我只是在 Gimp 中编辑了 alpha 通道,保持原始图像不变。这就是为什么每次我尝试编辑图像时,我都会得到相同的结果。
    猜你喜欢
    • 1970-01-01
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 2020-12-05
    • 2015-05-27
    • 2015-01-03
    • 1970-01-01
    • 2014-06-13
    相关资源
    最近更新 更多