ValueError:操作数无法与形状一起广播(400,400,3)(400,400)

时间:2018-02-12 07:36:44

标签: python-2.7 numpy image-processing opencv3.0 scikit-image

我正在使用pyshearlab软件包对图像进行去噪。该函数需要一个大小相等的图像形状。执行代码后,对某些图像进行去噪是可以的 但有些图像会产生这样的错误。 ValueError:操作数无法与形状(400,400,3)(400,400)一起广播。 所以我用img.size打印了图像的形状,它给出了(400,400,3)

我的问题是,是否可以从图像中消除第三个参数。 有人请帮帮我。

我正在使用它来进行图像去噪变换。在matlab中有很多可用于图像变换的工具包。在python中有任何包进行轮廓波去噪,曲波去噪,小波去噪等。

1 个答案:

答案 0 :(得分:1)

当你有一个形状为(400,400,3)numpy的图像数组时,这意味着你的图像的高度和宽度为400x400和3个通道。

大部分时间都是红色,绿色和蓝色。您的其他形状(400,400)只有一个通道。所以这些图像不能很好地协同工作。

这里有几个选项。这实际上取决于您的功能对图像的作用以及您的输出需要的内容。

您可以将3通道图像分割为单独的通道并单独处理它们。

channel1 = image[:, :, 0]
channel2 = image[:, :, 1]
channel3 = image[:, :, 2]

然后合并它们

image = np.dstack((channel1, channel2, channel3))

或者,如果您确定不需要所有通道,则在灰度图像f的情况下。即所有通道可能具有相同的值,您可以丢弃两个,只保留一个。

或者你可以将你的单通道图像最多三个通道,使它们具有相同的尺寸(使用np.dstack)。