Python 将二维numpy阵列转换为表示灰度图像的三维numpy阵列

Python 将二维numpy阵列转换为表示灰度图像的三维numpy阵列,python,opencv,numpy,Python,Opencv,Numpy,我将OpenCV与numpy和Python一起使用。我有一个2Duint8numpy数组。这些值表示阈值图像中超过阈值像素的局部密度。我想将其转换为一个所有RGB值设置相同的三维RGB图像,因此基本上是一个灰度图像,其中最大值为(255255255),其他所有内容都会相应地进行缩放。(我需要RGB,因为这似乎是我可以用OpenCV写入视频的唯一图像类型)。最有效的方法是什么?我假设您有一个2D灰度图像,类似于: >>> import cv2 >>> img_g

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

我假设您有一个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\u 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)