Python:对RGB执行灰色图像

Python:对RGB执行灰色图像,python,opencv,rgb,opencv3.1,rgbcolor,Python,Opencv,Rgb,Opencv3.1,Rgbcolor,我有一个灰色的图像,我想把它转换成RGB。我将如何在OpenCV中实现它 image = cv2.imread("image.jpg", cv2.IMREAD_GRAYSCALE) cv2.imshow('Grey Scale Image', image) cv2.waitKey() backtorgb = cv2.cvtColor(image,cv2.COLOR_GRAY2RGB) cv2.imshow('GRAY2RGB Image', backtorgb) cv2.waitKey()

我有一个灰色的图像,我想把它转换成RGB。我将如何在OpenCV中实现它

image = cv2.imread("image.jpg", cv2.IMREAD_GRAYSCALE)
cv2.imshow('Grey Scale Image', image)
cv2.waitKey()


backtorgb = cv2.cvtColor(image,cv2.COLOR_GRAY2RGB)
cv2.imshow('GRAY2RGB Image', backtorgb)
cv2.waitKey()

我尝试了灰色2RGB,但它没有改变图像。我哪里出错了?

这里有一个基本的误解。你不能删除所有的颜色信息,然后神奇地从任何地方重新创建它

一旦你删除它,它就消失了


那么GRAY2RGB是干什么的?它只是将灰色通道复制到R、G和B通道中,因此您有一个3通道图像,但所有3个通道都相同,因此它看起来是灰色的。

还有其他方法,您不需要openCV,最终图像是一个矩阵,您可以通过乘法来实现,请看这篇文章:

编辑:提供链接更改时的解决方案

一幅图像可以被视为3个矩阵,一个表示红色,一个表示绿色,一个表示蓝色,这是三种通道颜色RGB,每个像素的信息范围在0到255之间。要将其转换为灰度图像,必须通过亮度表示对所有颜色进行求和,亮度是一个已知的系数,可在一个计算系统中获得:

def rgb2gray(rgb):
    r, g, b = rgb[:,:,0], rgb[:,:,1], rgb[:,:,2]
    gray = 0.2989 * r + 0.5870 * g + 0.1140 * b
    return gray

在openCV中,我不知道是否有函数,但是这应该足够了。

感谢您的澄清。但这与您写的关于rgb的问题相反,它是gray向rgb请求的。