计算psnrpython
时间: 2023-08-03 15:02:04 浏览: 90
计算PSNR (Peak Signal-to-Noise Ratio) 是评估图像质量的一种常用方法,用于比较原始图像与经过压缩或处理后的图像之间的差异。在Python中,可以使用OpenCV库来计算PSNR。
以下是基于OpenCV库的示例代码来计算PSNR:
```python
import cv2
# 读取原始图像和处理后的图像
original_img = cv2.imread('original.jpg')
processed_img = cv2.imread('processed.jpg')
# 计算两幅图像的MSE(Mean Squared Error)
mse = np.mean((original_img - processed_img) ** 2)
# 如果MSE为0,则PSNR为无穷大(图像完全一致)
if mse == 0:
psnr = float('Inf')
else:
# 计算PSNR值
max_pixel_value = 255.0
psnr = 10 * np.log10((max_pixel_value ** 2) / mse)
# 打印PSNR值
print('PSNR:', psnr)
```
以上代码中,首先使用`cv2.imread()`函数读取原始图像和处理后的图像,然后计算两幅图像的均方差(MSE)。如果均方差为0,则PSNR为无穷大,说明两幅图像完全一致。否则,使用PSNR的公式计算PSNR值,并打印结果。
需要注意的是,计算PSNR值的前提是原始图像和处理后的图像的像素值范围都在0到255之间。如果像素值范围不在这个范围内,需要进行归一化或调整。
阅读全文