批量计算两个文件夹的ssim和psnr
时间: 2023-09-24 15:14:14 浏览: 145
要批量计算两个文件夹中所有对应文件的 SSIM 和 PSNR 值,你可以使用以下 Python 代码:
```python
import os
import cv2
import numpy as np
def calculate_ssim(img1, img2):
ssim = cv2.SSIM(img1, img2)
return ssim
def calculate_psnr(img1, img2):
mse = np.mean((img1-img2)**2)
if mse == 0:
return float('inf')
psnr = 20*np.log10(255.0/np.sqrt(mse))
return psnr
folder1 = 'path/to/folder1'
folder2 = 'path/to/folder2'
ssim_total = 0
psnr_total = 0
count = 0
for filename in os.listdir(folder1):
if filename.endswith('.jpg') or filename.endswith('.png'):
img1 = cv2.imread(os.path.join(folder1, filename))
img2 = cv2.imread(os.path.join(folder2, filename))
ssim = calculate_ssim(img1, img2)
psnr = calculate_psnr(img1, img2)
ssim_total += ssim
psnr_total += psnr
count += 1
ssim_avg = ssim_total / count
psnr_avg = psnr_total / count
print('Average SSIM:', ssim_avg)
print('Average PSNR:', psnr_avg)
```
你需要将 `folder1` 和 `folder2` 替换为你想比较的文件夹的路径。此代码假定两个文件夹中的文件名称是相同的。它会遍历每个文件,计算它们的 SSIM 和 PSNR 值,并计算这些值的平均值。