Python: 将灰度图像转RGB

Python: Perform Grey Image to RGB

我有一个灰色图像,我想将它转换成 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()

我试过 GRAY2RGB,但它没有改变图像。我哪里错了?

这里有一个根本性的误解。你不能删除所有的颜色信息,然后神奇地re-create 它不知从何而来。

一删就没了

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

还有其他方法,不需要openCV,最后图像是一个矩阵,乘法就可以了,看这个post: How can I convert an RGB image into grayscale in Python?

编辑:提供解决方案以防 link 发生变化。

一张图片可以看成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中不知道有没有函数,不过应该够用了