由于以下错误,我正在尝试添加频道
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)这样的频道图片。
我该如何解决这个问题?
答案 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