Python正则表达式匹配特定的的输入输出图片

     

详细内容可参考: https://www.computationalimaging.cn/2020/03/python-regular-expressions-match.html

某次图像生成实验的保存结果是下面这些图片,现在想要计算相同迭代次数下的*_real_image*和*_synthesized*两张图片之间的SSIM和PSNR。

整理出的代码如下:

 

import numpy 
import numpy as np
import math
import cv2
import torch
import pytorch_ssim
from torch.autograd import Variable
import os
import re

def psnr(img1, img2):
    mse = numpy.mean( (img1 - img2) ** 2 )
    if mse == 0:
        return 100
    PIXEL_MAX = 255.0
    return 20 * math.log10(PIXEL_MAX / math.sqrt(mse))

def ssim(img1,img2):
    img1 = torch.from_numpy(np.rollaxis(img1, 2)).float().unsqueeze(0)/255.0
    img2 = torch.from_numpy(np.rollaxis(img2, 2)).float().unsqueeze(0)/255.0   
    img1 = Variable( img1,  requires_grad=False)    # torch.Size([256, 256, 3])
    img2 = Variable( img2, requires_grad = False)
    ssim_value = pytorch_ssim.ssim(img1, img2).item()
    return ssim_value
dir = "./images/"

for item in os.listdir(dir):
    # 首先判断图片类别
    # 如果是real图片,则找到与其对应的生成图片,并进行计算;否则,判断下一个文件。
    if re.search('real',item) != None:  # 是real图片
        realImagePath = os.path.join(dir,item)  # './images/epoch080_iter1590000_real_image_3983_1.png'
        try:    # 为了防止意外找不到文件的情况
            realImage = cv2.imread(realImagePath)   # yes
            # 根据这张图片的文件名确定它对应的生成图片的文件名
            # 使用正则表达式中的sub替换函数
            itemSyn = re.sub("real","synthesized",item)
            synImagePath = os.path.join(dir,itemSyn)
            synImage = cv2.imread(synImagePath)
            psnrValue = psnr(realImage,synImage)
            ssimValue = ssim(realImage,synImage)
            print('psnr:' + str(psnrValue))
            print('ssim' + str(ssimValue))
        except: # 如果无该文件
            print('ERROR! can not find' + item)
        else:
            print('success:' + item)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

R.X. NLOS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值