有一个函数chart(ori,wm),ori代表图像1,wm代表图像2,输出是一个浮点数,代表两幅图片之间的psnr值,请写一个python函数,输入是ori和wm,仍然代表图像1和图像2,输出是n组图片通过函数chart算出的psnr值的折线图
时间: 2024-03-24 09:35:53 浏览: 119
好的,我可以为您编写这个函数。由于您没有提供n的具体值,我会默认为10,即输出10组图片的折线图。
首先,我们需要安装一些必要的库。请确保您的计算机中已经安装了matplotlib和opencv-python库。
```python
!pip install matplotlib opencv-python
```
然后,我们可以编写如下的函数:
```python
import cv2
import matplotlib.pyplot as plt
def chart(ori, wm, n=10):
psnrs = []
for i in range(n):
# 读取图片
ori_img = cv2.imread(ori.format(i+1))
wm_img = cv2.imread(wm.format(i+1))
# 计算PSNR
psnr = cv2.PSNR(ori_img, wm_img)
psnrs.append(psnr)
# 绘制折线图
plt.plot(range(1, n+1), psnrs, marker='o')
plt.title('PSNR Chart')
plt.xlabel('Image Number')
plt.ylabel('PSNR')
plt.show()
```
这个函数的输入包括:
- ori:图像1的文件名格式,其中{}表示数字占位符,如'ori_{}.jpg'。
- wm:图像2的文件名格式,其中{}表示数字占位符,如'wm_{}.jpg'。
- n:要计算PSNR的图片数量,默认为10。
输出是n组图片的折线图,横轴是图片的编号,纵轴是对应编号的图片的PSNR值。
例如,如果您有10对图像,它们的文件名格式分别为'ori_1.jpg'到'ori_10.jpg'和'wm_1.jpg'到'wm_10.jpg',您可以使用以下代码调用函数:
```python
ori = 'ori_{}.jpg'
wm = 'wm_{}.jpg'
chart(ori, wm)
```
这将会显示一张折线图,其中每个点表示一张图片的PSNR值。
阅读全文
相关推荐


















