超分辨率常用的代码

将tensor格式的图片转换为numpy

def tensor2np(t): # CHW -> HWC, [0, 1] -> [0, 255]
    return (t[0]*255).cpu().clamp(0, 255).round().byte().permute(1, 2, 0).numpy()

数据增强

import os
from PIL import Image
import argparse
import shutil

parser = argparse.ArgumentParser(description="数据增强")
parser.add_argument("--input-path", type=str, default='./hhh', help="地址")
parser.add_argument("--out-path", type=str, default='./hh', help="地址")

opt=parser.parse_args()

pathlist=os.listdir(opt.input_path)

if not os.path.exists(opt.out_path):
    os.mkdir(opt.out_path)

##尺度缩放
scale = [1]
##旋转角度
angle = [0,90]
##翻转  0代表不翻转 1代表水平翻转 2代表垂直翻转
flip=[0,1,2]
count=0

for image_name in pathlist:
    image=Image.open(os.path.join(opt.input_path,image_name)).convert('RGB')

    for i in range(len(scale)):
        for j in range(len(angle)):
            for c in range(len(flip)):

                image=image.rotate(angle[j])
                image=image.resize((int(image.size[0]*scale[i]), int(image.size[1]*scale[i])), Image.BICUBIC)

                if flip[c]==1:  ##水平翻转
                    image=image.transpose(Image.FLIP_LEFT_RIGHT)
                elif flip[c]==2:  ###垂直翻转
                    image.transpose(Image.FLIP_TOP_BOTTOM)
                else:
                    image=image   ##不翻转

                count+=1
                aa=image_name.split('.')[0]+'{}_{}_{}.png'.format(i,j,c)
                image.save(os.path.join(opt.out_path,aa))
                # image.show()

你可能感兴趣的:(超分辨实战,图像处理)