将2D numpy数组转换为表示灰度图像的3d numpy数组

时间:2014-04-17 22:23:45

标签: python opencv numpy

我正在使用numpy和Python的OpenCV。我有一个2D uint8 numpy数组。这些值表示来自阈值图像的超阈值像素的局部密度。我想将其转换为三维RGB图像,所有RGB值设置相同,因此基本上是灰度图像,其中最大值得到(255,255,255),其他所有内容都相应缩放。 (我需要RGB,因为这似乎是我用OpenCV写入视频的唯一一种图像)。最有效的方法是什么?

1 个答案:

答案 0 :(得分:3)

我假设你有一个2D灰度图像,如:

>>> import cv2
>>> img_gray = cv2.imread('./440px-Lenna.png', cv2.CV_LOAD_IMAGE_GRAYSCALE) # image take from http://en.wikipedia.org/wiki/Lenna

现在img_gray包含灰度图像:

>>> print(img_gray.shape)
 (440, 440)

您可以使用cv2.cvtColor

以有效的方式将图像转换为BGR
>>> img_bgr = cv2.cvtColor(img_gray, cv2.COLOR_GRAY2BGR)
>>> print(img_bgr.shape)
 (440, 440, 3)