由于以下错误,我正在尝试添加频道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)这样的通道图像。我该如何解决这个问题?
nx7onnlm1#
y = np.expand_dims(x, axis=-1) # Equivalent to x[:,:,np.newaxis]
正如该函数所说,它将添加一个额外的维度作为新的最后一个通道编辑
gev0vcfq2#
您可以使用拆分和合并操作来执行此操作:首先,使用split将你的2通道图像分割成两个数组。然后,创建一个数组,分别为你提供第三个通道。最后,合并这三个数组,得到一个3通道垫子。这是一个例子:
c1,c2 = cv2.split(img) merged = cv2.merge((c1,c2,arr))
其中img是2通道图像,arr是包含要添加的通道的数组,合并的图像包含合并的三个通道。
5uzkadbs3#
如下修改Aditya's answer:
y = np.expand_dims(x, axis=1)
axis = 1将在开始处插入新的维度,因此您可以简单地将轴的值更改为= 3。
axis = 1
= 3
l2osamch4#
另一种解决方法可能是创建占位符并填充它。
ph = np.ones((resized.shape[0], resized.shape[1], 1), dtype='uint8') ph[:,:,0] = resized
iszxjhcz5#
非常简单!在你的交互式环境中,只要>>> y = image.resize(48, 48, 1)>>> y.shape>>> (48, 48, 1)
>>> y = image.resize(48, 48, 1)
>>> y.shape
>>> (48, 48, 1)
5条答案
按热度按时间nx7onnlm1#
正如该函数所说,它将添加一个额外的维度作为新的最后一个通道
编辑
gev0vcfq2#
您可以使用拆分和合并操作来执行此操作:
首先,使用split将你的2通道图像分割成两个数组。然后,创建一个数组,分别为你提供第三个通道。最后,合并这三个数组,得到一个3通道垫子。
这是一个例子:
其中img是2通道图像,arr是包含要添加的通道的数组,合并的图像包含合并的三个通道。
5uzkadbs3#
如下修改Aditya's answer:
axis = 1
将在开始处插入新的维度,因此您可以简单地将轴的值更改为= 3
。l2osamch4#
另一种解决方法可能是创建占位符并填充它。
iszxjhcz5#
非常简单!在你的交互式环境中,只要
>>> y = image.resize(48, 48, 1)
>>> y.shape
>>> (48, 48, 1)