将灰度图像转换为3通道图像

时间:2016-10-18 23:34:54

标签: python numpy

我想将形状为(height,width)的灰度图像转换为形状为(height,width,nchannels)的3通道图像。工作是用for-loop完成的,但必须有一个简洁的方法。这是程序中的一个代码,有人可以给出一个提示。请指教。

 30         if img.shape == (height,width): # if img is grayscale, expand
 31             print "convert 1-channel image to ", nchannels, " image."
 32             new_img = np.zeros((height,width,nchannels))
 33             for ch in range(nchannels):
 34                 for xx in range(height):
 35                     for yy in range(width):
 36                         new_img[xx,yy,ch] = img[xx,yy]
 37             img = new_img

2 个答案:

答案 0 :(得分:44)

您可以使用np.stack更简洁地完成此任务:

img = np.array([[1, 2], [3, 4]])
stacked_img = np.stack((img,)*3, axis=-1)
print(stacked_img)
 # array([[[1, 1, 1],
 #         [2, 2, 2]],
 #        [[3, 3, 3],
 #         [4, 4, 4]]])

答案 1 :(得分:3)

height, width = 256, 256
img = np.zeros((height,width))
nchannels = 3
new_img = np.resize(img, (height, width, nchannels))

你走了。使用np.resize