Python为图像添加了一个通道

时间:2018-03-12 14:00:01

标签: python python-2.7 opencv tensorflow keras

由于以下错误,我正在尝试添加频道

  

ValueError:无法将形状(48,48)的输入数组广播为形状(48,48,1)

代码:

img = cv2.imread(f,0)
resized = cv2.resize(img, (48,48), interpolation = cv2.INTER_AREA)
print(resized.shape) 
(48, 48)

但我需要像(48,48,1)这样的频道图片。

我该如何解决这个问题?

5 个答案:

答案 0 :(得分:2)

y = np.expand_dims(x, axis=1)  # Equivalent to x[:,:,np.newaxis]

正如函数所说,它将添加一个额外的维度作为新的Last Channel

答案 1 :(得分:1)

您可以使用拆分和合并操作来执行此操作:

首先,使用拆分将2通道图像分割成两个数组。然后,创建分别为您提供第三个通道的数组。最后,合并三个数组以获得一个3通道Mat。

这是一个例子:

c1,c2 = cv2.split(img)
merged = cv2.merge((c1,c2,arr))

其中img是你的2通道图像,arr是包含要添加的通道的数组,合并的图像包含合并的三个通道。

答案 2 :(得分:0)

修改Aditya的答案:

y = np.expand_dims(x,轴= 1) axis = 1会在开始处插入新尺寸,axis = 3对我有用。

答案 3 :(得分:0)

非常容易 y = image.resize(48,48,1)

y.shape

  
    
      

48,48,1

    
  

答案 4 :(得分:0)

另一个解决方法可能是创建一个占位符并填充它。

ph = np.ones((resized.shape[0], resized.shape[1], 1), dtype='uint8')
ph[:,:,0] = resized