cv2.COLOR_GRAY2RGB做什么?

问题描述 投票:0回答:1

我碰巧遇到了这个API cv2.COLOR_GRAY2RGB。我发现这很奇怪,因为应该没有办法将灰度图像转换为RGB图像。所以我尝试了这样的事情:我拍了这样的图片:

enter image description here

图像由plt.imshow(img)显示(带有默认参数)。然后,我使用cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)将其转换为灰度,并得到以下信息:

enter image description here

我知道它不会出现灰度外观,因为默认情况下imshow()不会显示灰度图像(我认为更像是热图)。所以我用了cv2.cvtColor(img,cv2.COLOR_GRAY2RGB)并得到了这个:

enter image description here

尽管现在有三个频道,但看起来还是灰色的。因此,我得出结论,cv2.COLOR_GRAY2RGB是一种在不更改imshow()设置的情况下以灰度方式显示灰度图像的解决方案。

现在我的问题是,当我再次使用cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)将此三通道灰度图像转换回一个通道时,像素值与我第一次转换原始图像时完全相同使用cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)进入一个通道:enter image description here

换句话说,cv2.COLOR_BGR2GRAY可以进行多对一映射。我不知道这怎么可能。

我碰巧遇到了这个API cv2.COLOR_GRAY2RGB。我发现这很奇怪,因为应该没有办法将灰度图像转换为RGB图像。所以我尝试了这样的事情:我拍了张照片...

opencv imshow
1个回答
0
投票

[COLOR_BGR2GRAY]彩色模式使用BGR通道和每个像素w_R*R+w_G*G+w_B*B=Y的加权总和为每个像素估算灰度值。因此任何3通道图像都变为1通道。

© www.soinside.com 2019 - 2024. All rights reserved.