python计算psnr
时间: 2023-07-17 10:57:18 浏览: 67
PSNR(Peak Signal-to-Noise Ratio)是一种衡量图像或视频质量的指标,它可以用来评估原始图像与经过压缩或处理后的图像之间的相似程度。在Python中,可以使用以下代码计算PSNR:
```python
import cv2
import numpy as np
def compute_psnr(original_img, compressed_img):
# 读取图像
img1 = cv2.imread(original_img)
img2 = cv2.imread(compressed_img)
# 将图像转换为浮点数
img1 = img1.astype(np.float64)
img2 = img2.astype(np.float64)
# 计算MSE(均方误差)
mse = np.mean((img1 - img2) ** 2)
# 计算PSNR
if mse == 0:
return "Infinite"
else:
max_pixel = 255.0
psnr = 20 * np.log10(max_pixel / np.sqrt(mse))
return psnr
# 示例用法
psnr = compute_psnr("original.jpg", "compressed.jpg")
print("PSNR:", psnr)
```
请将`original_img`和`compressed_img`分别替换为原始图像和经过处理后的图像的文件路径。这段代码使用OpenCV库来读取图像,并利用NumPy库进行数值计算。最后,通过计算MSE和使用PSNR公式计算得出结果。