cv2.COLOR_GRAY2RGB 是做什么的?
What does cv2.COLOR_GRAY2RGB do?
正好遇到这个APIcv2.COLOR_GRAY2RGB。我觉得很奇怪,因为应该没有办法将灰度图像转换为 RGB 图像。所以我尝试了这样的事情:
我拍了这样一张图片:
图像由 plt.imshow(img) 显示(带有默认参数)。
然后我用 cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 将它转换成灰度并得到这个:
我知道它看起来不是灰度是因为默认情况下 imshow() 不显示灰度图像(我认为更像是热图)。所以我用了 cv2.cvtColor(img, cv2.COLOR_GRAY2RGB) 得到了这个:
尽管它现在有三个通道,但看起来还是灰溜溜的。所以我得出结论,cv2.COLOR_GRAY2RGB 是一种在不更改 imshow().
设置的情况下以灰度方式显示灰度图像的方法。
现在我的问题是,当我再次使用cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)将这个三通道的灰度图像转换回一个通道时,像素值是完全一样的作为我第一次使用 cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 将原始图像转换为一个通道:
换句话说,cv2.COLOR_BGR2GRAY可以做多对一的映射。我想知道这怎么可能。
COLOR_BGR2GRAY
颜色模式使用 B
、G
、R
通道、每个像素 w_R*R+w_G*G+w_B*B=Y
的加权和来估计每个像素的灰度值.所以任何 3 通道图像都变成 1 通道。
COLOR_GRAY2BGR
颜色模式基本上把所有B
、G
、R
通道都替换成灰度值Y
,所以B=Y, G=Y, R=Y
。它通过复制将单通道图像转换为多通道图像。
更多关于颜色模式的文档是 here。
正好遇到这个APIcv2.COLOR_GRAY2RGB。我觉得很奇怪,因为应该没有办法将灰度图像转换为 RGB 图像。所以我尝试了这样的事情: 我拍了这样一张图片:
图像由 plt.imshow(img) 显示(带有默认参数)。 然后我用 cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 将它转换成灰度并得到这个:
我知道它看起来不是灰度是因为默认情况下 imshow() 不显示灰度图像(我认为更像是热图)。所以我用了 cv2.cvtColor(img, cv2.COLOR_GRAY2RGB) 得到了这个:
尽管它现在有三个通道,但看起来还是灰溜溜的。所以我得出结论,cv2.COLOR_GRAY2RGB 是一种在不更改 imshow().
设置的情况下以灰度方式显示灰度图像的方法。现在我的问题是,当我再次使用cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)将这个三通道的灰度图像转换回一个通道时,像素值是完全一样的作为我第一次使用 cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 将原始图像转换为一个通道:
换句话说,cv2.COLOR_BGR2GRAY可以做多对一的映射。我想知道这怎么可能。
COLOR_BGR2GRAY
颜色模式使用 B
、G
、R
通道、每个像素 w_R*R+w_G*G+w_B*B=Y
的加权和来估计每个像素的灰度值.所以任何 3 通道图像都变成 1 通道。
COLOR_GRAY2BGR
颜色模式基本上把所有B
、G
、R
通道都替换成灰度值Y
,所以B=Y, G=Y, R=Y
。它通过复制将单通道图像转换为多通道图像。
更多关于颜色模式的文档是 here。