用python 编写一段程序,完成以下内容: 读入图像Lenna.png 读入 Lenna. jpg,比较两个图像数据,它们是否相等?为什么?计算两个图像数据之间的 PSNR 值。
时间: 2023-04-12 20:01:30 浏览: 205
以下是用 Python 编写的程序,可以完成上述要求:
```python
import cv2
import numpy as np
# 读入图像
img1 = cv2.imread('Lenna.png')
img2 = cv2.imread('Lenna.jpg')
# 比较两个图像数据是否相等
if np.array_equal(img1, img2):
print("两个图像数据相等")
else:
print("两个图像数据不相等")
# 计算两个图像数据之间的 PSNR 值
mse = np.mean((img1 - img2) ** 2)
if mse == 0:
psnr = 100
else:
psnr = 20 * np.log10(255.0 / np.sqrt(mse))
print("PSNR 值为:", psnr)
```
程序首先使用 OpenCV 库读入两个图像,然后使用 `np.array_equal()` 函数比较它们的数据是否相等。如果相等,程序输出“两个图像数据相等”,否则输出“两个图像数据不相等”。
接着,程序计算两个图像数据之间的 MSE(均方误差),并根据 MSE 计算 PSNR(峰值信噪比)。如果 MSE 为 0,说明两个图像数据完全相同,此时 PSNR 为 100。否则,程序使用公式 `PSNR = 20 * log10(MAX_I / sqrt(MSE))` 计算 PSNR 值,其中 MAX_I 为像素值的最大值(在本例中为 255)。最后,程序输出 PSNR 值。
注意:本程序假设两个图像的大小和通道数相同。如果两个图像的大小或通道数不同,程序可能会出错。
阅读全文