ValueError: operands could not be broadcast together with shapes (417,556) (417,556,3)
时间: 2023-09-27 12:06:13 浏览: 85
这个错误通常是由于你的两张图像的维度不一致导致的,具体来说,可能是一张图像是灰度图像,而另一张图像是RGB图像,或者一张图像的尺寸是(417, 556),而另一张图像的尺寸是(417, 556, 3)。
为了解决这个问题,你需要确保两张图像的尺寸和维度都是一致的。如果你的图像是RGB图像,你可以将其转换为灰度图像:
```python
from PIL import Image
import numpy as np
img1 = Image.open('before.jpg').convert('L')
img2 = Image.open('after.jpg').convert('L')
arr1 = np.array(img1, dtype=float)
arr2 = np.array(img2, dtype=float)
rmse = np.sqrt(np.mean((arr1 - arr2) ** 2))
print("RMSE: {:.2f}".format(rmse))
```
在这个示例中,我们使用`convert`函数将RGB图像转换为灰度图像,然后计算RMSE值。
如果你的两张图像的尺寸不一致,你需要使用Pillow库中的`resize`函数将它们调整为相同的尺寸:
```python
from PIL import Image
import numpy as np
img1 = Image.open('before.jpg').convert('L').resize((417, 556))
img2 = Image.open('after.jpg').convert('L').resize((417, 556))
arr1 = np.array(img1, dtype=float)
arr2 = np.array(img2, dtype=float)
rmse = np.sqrt(np.mean((arr1 - arr2) ** 2))
print("RMSE: {:.2f}".format(rmse))
```
在这个示例中,我们使用`resize`函数将两张图像的尺寸都调整为(417, 556),然后计算RMSE值。
阅读全文