【问题标题】:Grayscale to RGB - Python灰度到 RGB - Python
【发布时间】:2019-11-27 09:56:42
【问题描述】:

我无法获得 RGB 灰度图像,这是我的代码:

img=cv2.imread("clahe_2.jpg")
backtorgb = cv2.cvtColor(img,cv2.COLOR_GRAY2RGB)
showImg(backtorgb,"claheCLR")

此错误返回:

backtorgb = cv2.cvtColor(img,cv2.COLOR_GRAY2RGB)
cv2.error: /build/opencv-L2vuMj/opencv-3.2.0+dfsg/modules/imgproc/src/color.cpp:9765: error: (-215) scn == 1 && (dcn == 3 || dcn == 4) in function cvtColor

文件路径正确。 有什么建议吗?

【问题讨论】:

  • 1) 如果您希望imread() 以灰度方式读取,则应在imread() 上将标志设置为cv2.IMREAD_GRAYSCALE。 2)如果你想恢复为彩色图像,你应该知道OpenCV一般使用BGR排序。
  • 请打印img.shape,以便我们看到图像中的通道数。

标签: python opencv image-processing colors image-manipulation


【解决方案1】:

问题在于 CLAHE 滤镜的应用和它的灰度输出,实际上输出保持了 3 个通道但看起来像灰度,文档 here。

简单找到here一个保留RGB形式的方法来解决问题,感谢大家的解答。

【讨论】:

  • 是的,没提到..我的坏:)
【解决方案2】:

默认情况下,imread 将图像打开为 3 通道 BGR 图像,因此您无需将其转换为 RGB,如果您正在寻找它,可能只需转换为 RGB。

查看文档here

【讨论】:

    【解决方案3】:

    我认为问题在于您的图像不是真正的灰度。它是 RGB,但以灰度显示。所以需要从图像中带一个通道然后运行代码:

    backtorgb = cv2.cvtColor(img[..., 0], cv2.COLOR_GRAY2RGB)

    【讨论】:

    • 如果问题是图像是RGB可见的灰度,那么确定没有必要将其转换为RGB?
    • 是的。主要反应是*.jpg、*.png等图像格式不能存储灰度图像,总是包含多通道数据。
    • 关于您最后的评论:PNG 和 JPEG 当然可以存储灰度(单通道)图像。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-11
    • 1970-01-01
    • 2014-11-29
    • 2018-07-16
    相关资源
    最近更新 更多