Traceback (most recent call last): File "C:\Users\86158\PycharmProjects\pythonProject\psnr.py", line 17, in <module> print(psnr(img1, img2)) File "C:\Users\86158\PycharmProjects\pythonProject\psnr.py", line 9, in psnr mse = np.mean((img1-img2)**2) ValueError: operands could not be broadcast together with shapes (935,1920,3) (1200,1920,3)
时间: 2023-09-03 16:10:57 浏览: 44
这个错误提示是因为您的两张图片的尺寸不同,无法进行运算。在计算 PSNR 时,需要保证两张图片的尺寸大小相等,可以将其中一张图片调整为与另一张图片相同的尺寸。您可以使用 OpenCV 提供的 `resize()` 函数将图片进行缩放,使其尺寸相同,然后再计算 PSNR,具体实现方法如下:
```
import cv2
import numpy as np
def psnr(img1, img2):
# 将图片的尺寸调整为相同的大小
img1 = cv2.resize(img1, (img2.shape[1], img2.shape[0]))
# 计算 MSE
mse = np.mean((img1 - img2) ** 2)
# 计算 PSNR
if mse == 0:
return float('inf')
else:
pixel_max = 255.0
psnr = 20 * np.log10(pixel_max / np.sqrt(mse))
return psnr
img1 = cv2.imread('image1.jpg')
img2 = cv2.imread('image2.jpg')
print(psnr(img1, img2))
```
注意,缩放后的图片可能会失真,从而影响 PSNR 的计算结果。因此,尽量保证两张图片的尺寸相同,或者使用其他的图像质量评价指标。
相关问题
Traceback ( most recent call last ) :File " C:/python/kfc.py " , line 8
Traceback (most recent call last): File "C:/python/kfc.py", line 8
这是Python中的错误追踪信息,通常在程序出现错误时会显示。它告诉我们在哪个文件的哪一行出现了错误。
具体来说,"Traceback (most recent call last)" 表示错误追踪的开始,它告诉我们下面的信息是最近一次调用的错误。
"File "C:/python/kfc.py", line 8" 表示错误发生在文件 "C:/python/kfc.py" 的第8行。
如果你想解决这个错误,可以打开 "C:/python/kfc.py" 文件,并检查第8行的代码,看看是否有语法错误或逻辑错误。
Traceback (most recent call last): File "C:\Users\Amtec\PycharmProjects\pythonProject\main.py", line 2, in <module> import cx_Oracle
这个错误信息表明在文件 "C:\Users\Amtec\PycharmProjects\pythonProject\main.py" 第 2 行,在导入 cx_Oracle 模块时发生了 ImportError 错误。这可能是因为你没有安装 cx_Oracle 模块或者安装的版本不兼容。你可以尝试以下两种方法解决这个问题:
1.使用 pip 安装 cx_Oracle 模块
```shell
pip install cx_Oracle
```
2.下载并安装适合你的 Python 版本和操作系统的 cx_Oracle 模块,下载地址为:https://www.oracle.com/database/technologies/instant-client/downloads.html