首页 > 编程知识 正文

rgb模式的图像有多少个通道,黑灰色rgb数值

时间:2023-05-03 12:24:36 阅读:170684 作者:4936

通常,将RGB图像转换为灰色图像。 很少将灰色图像转换为RGB图像。 如果有需求,将灰色图像转换为RGB图像。 但是,在网上发现这样的答案很少,马上就变得措手不及了。 我用opencv-python解决这个问题。

我知道opencv在函数cvtcolor ()中有参数cv2.COLOR_GRAY2BGR,可以直接将灰色图像转换为RGB图像吗?

import numpy as npimport cv2#首先以灰色读取照片src=cv2.imread('demo.jpg ),0 ),然后使用ctvcolor )函数进行图像转换。 SRC_RGB=cv2.cvtcolor(src,cv2.COLOR_GRAY2BGR )显示图像cv2.imshow )、src ) cv2.imshow )、output )、output )

显示图像:

你会发现什么都没有改变。 果然是灰色的图像。 那么怎么办?

RGB图像有3个维度的信息,每种颜色相当于一个3维向量,表达规律相当于同一个向量在不同坐标轴下,即不同基底下表示。 如果将其转换为灰度,则只剩下一个维,就像将三维向量投影到一维标量上一样,无法恢复为原始向量。 要恢复,必须保存其他两个维度的信息,原理上合起来是原来的三维矢量。

那么怎么办?

将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,就可以恢复为原来的RGB图像。 同样,我们的g可以自由替换为红绿蓝三种分量中的任何一种。 进行示威吧。

from _ _ future _ importdivisionimportnumpyasnpimportcv 2src=cv2.im read (c :/users/12914/pictures/Messi cv2.) 该数据结构是一个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.5870; t=0.1140b_new=(g-p*r-q*g )/TB_new=NP.uint8(b_new ) src_new=NP.zeros () src.shape ) )

可以看出“result”和“input”的图像一致。 因此,仅使用cvtcolor ()函数无法将灰色图像直接转换为RGB图像。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。