keras Python向图像再添加一个通道

1mrurvl1  于 2023-01-26  发布在  Python
关注(0)|答案(5)|浏览(205)

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

nx7onnlm

nx7onnlm1#

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

正如该函数所说,它将添加一个额外的维度作为新的最后一个通道
编辑

  • 轴将为-1而不是1
gev0vcfq

gev0vcfq2#

您可以使用拆分和合并操作来执行此操作:
首先,使用split将你的2通道图像分割成两个数组。然后,创建一个数组,分别为你提供第三个通道。最后,合并这三个数组,得到一个3通道垫子。
这是一个例子:

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

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

5uzkadbs

5uzkadbs3#

如下修改Aditya's answer

y = np.expand_dims(x, axis=1)

axis = 1将在开始处插入新的维度,因此您可以简单地将轴的值更改为= 3

l2osamch

l2osamch4#

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

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

iszxjhcz5#

非常简单!在你的交互式环境中,只要
>>> y = image.resize(48, 48, 1)
>>> y.shape
>>> (48, 48, 1)

相关问题