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

Python 2.7 ValueError:操作数无法与形状(400400,3)(400400)一起广播,python-2.7,numpy,image-processing,opencv3.0,scikit-image,Python 2.7,Numpy,Image Processing,Opencv3.0,Scikit Image,我正在使用pyshearlab包对图像进行去噪。该函数要求图像形状大小相等。代码执行后,对某些图像进行去噪即可 但有些图像会产生这样的错误。 ValueError:操作数无法与形状(400400,3)(400400)一起广播。 所以我用img.size打印了图像的形状,它给出了(400400,3) 我的问题是,是否可以从图像中消除第三个参数。 有人请帮帮我 我使用它进行图像去噪转换。matlab中有许多用于图像转换的工具包。python中是否有任何包可以执行contourlet去噪、curvel

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

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


我使用它进行图像去噪转换。matlab中有许多用于图像转换的工具包。python中是否有任何包可以执行contourlet去噪、curvelet去噪、bandlet去噪等操作。

当您有形状(400、400、3)的图像数组时在numpy中,这意味着您的图像具有400x400的高度和宽度以及3个通道

大多数情况下都是红色、绿色和蓝色。其他具有形状(400400)的图像只有一个通道。所以这些图像不能很好地协同工作

这里有几个选项。这实际上取决于你的函数对图像做了什么,以及你的输出需要是什么

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

channel1 = image[:, :, 0]
channel2 = image[:, :, 1]
channel3 = image[:, :, 2]
然后再合并它们

image = np.dstack((channel1, channel2, channel3))
或者,如果您确定不需要所有通道,在灰度图像f的情况下。E所有通道可能都具有相同的值,您可以删除两个通道,而只保留一个通道


或者,您可以将一个通道图像凹凸到三个通道,使它们具有相同的维度(也可以使用np.dstack)。

我建议您首先了解第三个维度是关于什么的。这是RGB信息吗?原则上,您可以使用image[:,:,0]、image[:,:,1]和/或image[:,:,2]来拾取形状(400400)的数组。1(400400)图像是黑/白的,以及(400400,3)颜色吗?