用python遍历读取images文件夹里的图片和image_embeded文件夹里的图片,根据序号一一对应,用tensorflow库进行PSNR峰值信噪比计算
时间: 2023-05-28 09:06:48 浏览: 94
以下是一个示例代码,其中假设images文件夹和image_embeded文件夹中的图片文件名是按照相同的顺序命名的:
```python
import os
import tensorflow as tf
from PIL import Image
# 定义函数计算PSNR
def psnr(img1, img2):
mse = tf.reduce_mean(tf.square(img1 - img2))
return 20 * tf.math.log(255.0 / tf.sqrt(mse)) / tf.math.log(10.0)
# 遍历images文件夹和image_embeded文件夹中的图片
img_dir = 'images'
embeded_dir = 'image_embeded'
img_files = sorted(os.listdir(img_dir))
embeded_files = sorted(os.listdir(embeded_dir))
# 创建tensorflow会话
sess = tf.Session()
# 循环计算每一对图片的PSNR
for i in range(len(img_files)):
# 读取原图和嵌入后的图
img_path = os.path.join(img_dir, img_files[i])
embeded_path = os.path.join(embeded_dir, embeded_files[i])
img = Image.open(img_path)
embeded = Image.open(embeded_path)
# 转换为tensorflow tensor
img_tensor = tf.convert_to_tensor(img)
embeded_tensor = tf.convert_to_tensor(embeded)
# 计算PSNR
psnr_val = sess.run(psnr(img_tensor, embeded_tensor))
print('PSNR of %s: %f' % (img_files[i], psnr_val))
# 关闭tensorflow会话
sess.close()
```
注意,以上代码仅供参考,实际使用时需要根据具体情况进行修改。例如,可能需要根据实际情况调整图片的大小、像素格式等参数,以及根据具体需求修改PSNR的计算方法。
阅读全文