ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

批量处理文件

2021-03-22 00:00:09  阅读:210  来源: 互联网

标签:文件 批量 处理 cv2 shape img2 print path img1


目 录

前言

最近在做图像的数据集时,经常要对批量文件进行处理。因为代码不熟练,每次都要查,就很烦,这次直接把数据集做好了,但以后也可能重做啊,谁知道这鬼数据会不会影响结果。苦逼!这会趁着跑实验的时间,记录一下常用操作,方便翻阅。

查看图片通道数

注意不是所有图片都是3通道的,png图像有3有4,4通道的图多了一个透明度。

遍历文件夹

path = '你的文件路径'
all_image = os.listdir(path)# 返回当前路径下的文件及文件夹列表
# print(all_image)

for i in all_image:
    img_path = os.path.join(path,i)# 遍历到了所有文件

文件路径分割

import os
file_path = "D:/test/test.py"
(filepath,tempfilename) = os.path.split(file_path)
(filename,extension) = os.path.splitext(tempfilename)

filepath为文件的目录,即D:/test

filename为文件的名字,即test

extension为文件的扩展名,即.py
参考:python分割文件目录/文件名和后缀

综合

import cv2
import os

path = '读取路径'
save_path = '保存路径'
all_image = os.listdir(path)# 返回当前路径下的文件及文件夹列表
print(all_image)

for i in all_image:
    img_path = os.path.join(path,i)
    img = cv2.imread(img_path)
    # 图像使用双三次插值缩小3倍
    a = int(img.shape[0]/3)
    b = int(img.shape[1]/3)
    #print (a,b)
    (filename,extension) = os.path.splitext(i)
    img2 = cv2.resize(img,(b,a),interpolation=cv2.INTER_CUBIC)
    # print (save_path+'/'+filename)
    cv2.imwrite(save_path+'/'+filename+'x3'+extension,img2)
print('finished convert')

PSNR和SSIM计算公式

自己写的公式,如果sr图像和原图不一样大时,有双三次插值对sr进行矫正。可能和正统的PSNR计算有出入,有待考证,同学们多提意见。。。这里主要是为了将sr后的图和bicubic后的图的指标进行对比。

'''
https://blog.csdn.net/lly1122334/article/details/102471732?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_utm_term-0&spm=1001.2101.3001.4242
'''
import cv2
import math
import numpy as np
from skimage import measure

def psnr(img1, img2):
    """计算PSNR"""
    mse = np.mean((img1 / 255 - img2 / 255) ** 2)  # 均方差
    if mse < 1.0e-10:  # 几乎无差异返回100
        return 100
    PIXEL_MAX = 1  # 像素最大值
    return 20 * math.log10(PIXEL_MAX / math.sqrt(mse))

if __name__ == "__main__":
    img1 = cv2.imread('hr路径')#hr
    img2 = cv2.imread('sr路径')#sr
    img3 = cv2.imread('lr路径')#lr
    #print ('The shape of HR is:',img1.shape[0:2])

    '''获取相同的形状'''
    if img1.shape != img2.shape:
        print ('The shape of HR is',img1.shape)
        print ('The shape of SR is',img2.shape)
        img2 = cv2.resize(img2,(img1.shape[1],img1.shape[0]),interpolation=cv2.INTER_CUBIC)
    img3 = cv2.resize(img3,(img1.shape[1],img1.shape[0]),interpolation=cv2.INTER_CUBIC)

    '''输出PSNR & SSIM'''
    print('PSNR of SR:',psnr(img1, img2))
    print('PSNR of bicubic:',psnr(img1, img3))
    print('SSIM of SR:',measure.compare_ssim(img1, img2, data_range=255, multichannel=True))
    print('SSIM of SR:',measure.compare_ssim(img1, img3, data_range=255, multichannel=True))

标签:文件,批量,处理,cv2,shape,img2,print,path,img1
来源: https://blog.csdn.net/weixin_46515047/article/details/115058916

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有