将二维numpy数组转换为表示灰度图像的三维numpy数组
我正在使用OpenCV、numpy和Python。我有一个二维的 uint8
numpy数组。这个数组里的值表示从经过阈值处理的图像中,超过阈值的像素的局部密度。我想把这个数组转换成一个三维的RGB图像,所有的RGB值都设置成一样的,也就是说,基本上是一个灰度图像,其中最大值对应 (255,255,255)
,其他的值则按比例缩放。(我需要RGB格式,因为这似乎是我用OpenCV写入视频的唯一图像类型)。那么,有什么高效的方法可以做到这一点呢?
1 个回答
4
我假设你有一张二维的灰度图像,像这样:
>>> 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)