我有一个numpy数组格式的图像,我写了代码,假设rgb图像作为输入,但是我发现输入由黑白图像组成。
应该是RGB即(256,256,3)尺寸的图像,我将输入作为灰度(256,256)阵列图像并将其转换为(256,256,3)
这是我在numpy数组中所拥有的:
[[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
...
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]]
(256, 256)
这就是我想要的:(相同元素的数组对上面数组中的每个值重复3次)
[[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]
...
[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]]]
是否有执行此操作的numpy函数? 如果没有,是否可以在python数组中执行任何操作并将其转换为numpy?
答案 0 :(得分:1)
您可以使用numpy.dstack
沿第三个轴堆叠2D阵列:
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.dstack([a, a, a])
结果:
[[[1 1 1]
[2 2 2]]
[[3 3 3]
[4 4 4]]]
或使用opencv merge
函数合并3个颜色通道。
答案 1 :(得分:1)
您可以通过两种方式进行操作:
import cv2 import numpy as np gray = np.random.rand(256, 256) gary2rgb = cv2.cvtColor(gray,cv2.COLOR_GRAY2RGB)
import numpy as np def convert_gray2rgb(image): width, height = image.shape out = np.empty((width, height, 3), dtype=np.uint8) out[:, :, 0] = image out[:, :, 1] = image out[:, :, 2] = image return out gray = np.random.rand(256, 256) # gray scale image gray2rgb = convert_gray2rgb(gray)