我有一个用 2D numpy 数组表示的灰度图像,我想把它变成一个 3D numpy 数组,表示一个彩色 rgb 图像(显然仍然是灰色的)。
img.shape // (100, 100)
img[10, 10] // e.g. 42
// do something
img.shape // (100, 100, 3)
img[10, 10] // e.g. [42, 42, 42]
我发现这个问题正好相反: numpy 3D-image array to 2D
答案 0 :(得分:1)
您可以使用 Numpy 的 dstack()
深度堆叠三个灰度图像:
RGB = np.dstack((grey, grey, grey))
答案 1 :(得分:0)
您可以为此使用 opencv 函数:image_color = cv2.cvtColor(image_gray, colorcode)
。
请参阅文档 https://docs.opencv.org/3.4/d8/d01/group__imgproc__color__conversions.html
中的可用颜色代码最适合您的可能是cv2.COLOR_GRAY2RGB
。
import cv2
image_color = cv2.cvtColor(image_gray, cv2.COLOR_GRAY2RGB)
这会给你灰度图像作为 3 通道 rgb 阵列。
使用 numpy 你可以看看 https://stackoverflow.com/a/40119878/14997346
答案 2 :(得分:0)
以下代码有帮助吗?
import numpy as np
aa = np.zeros((4,4),dtype='int64')
aa[1,1] = 42
aa = aa.reshape((4,4,1))
bb = np.broadcast_to(aa,(4,4,3))
print(bb[1,1,:])