rgb颜色通道数值,在rgb的图像模式中有几个通道
通常,RGB图像被转换成灰度图像。灰度图像很少转换成RGB图像。如有必要,将灰度图像转换为RGB图像。但是在网上找到这样的答案很少,马上就变得毫无准备。我用opencv-python来解决这个问题。
我知道opencv有参数cv2。函数cvtcolor()中的COLOR_GRAY2BGR。我可以直接把灰度图像转换成RGB图像吗?
导入numpy为npimport cv2#首先读取照片src=cv2.imread(demo.jpg),0)为灰色,然后使用ctvcolor)函数转换图像。SRC_RGB=cv2.cvtcolor(src,cv2。COLOR_GRAY2BGR)显示图像cv2.imshow)、src) cv2.imshow)、输出)、输出)
显示图像:
你会发现什么都没变。果然是灰色的图像。那我该怎么办呢?
RGB图像具有三维信息,每种颜色相当于一个三维矢量,表达规律相当于同一个矢量在不同的坐标轴下表示,也就是在不同的基下表示。如果转换成灰度,就只剩下一维了。就像把三维向量投影到一维标量上一样,无法还原成原始向量。要恢复,必须保存其他两个维度的信息。原则上,它们是原始的三维向量。
那我该怎么办呢?
将RGB表示转换为gGB表示。也就是说,蓝色分量r被灰色分量g代替.蓝色分量B和绿色分量G保持不变。由于灰度g=p*R q*G t*B(其中p=0.2989,q=0.5870,t=0.1140),r=(g-q*g-t*b )/p),所以只需保留两个颜色分量B和G,加上灰度G,就可以恢复,同样,我们的G可以自由替换为红、绿、蓝三个分量中的任意一个。我们来演示一下。
from _ _ Future _ importdivisionimportnumpyasnpimportcv 2 src=cv2 . im read(c:/users/12914/pictures/messic v2。)数据结构为3D numpy.array,其中,索引的顺序为行、列、通道:b=src (:0) g=src 2),灰度级g=p*R q*G t*B(其中p)。因此,只需要保留R和G两个颜色分量并加上灰度级G,就可以恢复原始的RGB图像。g=src _ gray[:]p=0.2989;q=0.5870t=0.1140 b _ new=(g-p * r-q * g)/TB _ new=NP . uint 8(b _ new)src _ new=NP . zeros()src . shape))
可见“结果”和“输入”的形象是一致的。所以只使用cvtcolor()函数并不能直接将灰度图像转换成RGB图像。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。