遍历读取images文件夹里的图片和image_enbeded文件夹里的图片,根据序号一一对应,进行结构相似度计算
时间: 2023-05-28 14:04:57 浏览: 94
以下是Python代码实现:
```python
import os
import cv2
import numpy as np
from skimage.measure import compare_ssim
# 定义函数,计算两张图片的结构相似度
def calc_ssim(img1, img2):
img1 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
img2 = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)
ssim = compare_ssim(img1, img2)
return ssim
# 获取images文件夹中所有图片的路径
img_folder = 'images'
img_paths = [os.path.join(img_folder, f) for f in os.listdir(img_folder) if f.endswith('.jpg')]
# 获取image_enbeded文件夹中所有图片的路径
img_enbeded_folder = 'image_enbeded'
img_enbeded_paths = [os.path.join(img_enbeded_folder, f) for f in os.listdir(img_enbeded_folder) if f.endswith('.jpg')]
# 对每对图片进行结构相似度计算
for i in range(len(img_paths)):
# 读取images文件夹中的图片
img1 = cv2.imread(img_paths[i])
# 读取image_enbeded文件夹中的对应图片
img2 = cv2.imread(img_enbeded_paths[i])
# 计算结构相似度
ssim = calc_ssim(img1, img2)
print(f"图片{i+1}的结构相似度为:{ssim}")
```
以上代码会依次输出每对图片的结构相似度。其中,`calc_ssim()`函数使用了`skimage.measure`模块中的`compare_ssim()`函数来计算结构相似度。在计算之前,先将两张图片转换为灰度图,以便进行比较。
阅读全文