Numpy 2D 图像到 3D

时间:2021-04-20 11:50:23

标签: python numpy

我有一个用 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

3 个答案:

答案 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,:])
相关问题