美文网首页
transforms的resize和CenterCrop

transforms的resize和CenterCrop

作者: zeolite | 来源:发表于2021-07-24 23:08 被阅读0次

    我最近疑惑为什么使用transforms.resize(image_size)后跟着transforms.CenterCrop(image_size), 代码实现看下
    1.新建文件夹 image_folder 放张图片进去
    2.定义DataSet

    class Cudata(Dataset):
    
        def __init__(self):
            super(Cudata, self).__init__()
            self.data_dir = r'./image_folder/'
            self.datalist = os.listdir(self.data_dir)
            self.cu_transform = transforms.Compose([
                transforms.ToTensor(),
                transforms.Resize(120),
                transforms.CenterCrop(120),
            ])
    
        def __getitem__(self, index):
            id = self.datalist[index]
            img_path = os.path.join(self.data_dir, id)
            img = Image.open(img_path)
            img = self.cu_transform(img)
            return img
    
        def __len__(self):
            return len(self.datalist)
    

    3.调用

    cu_data = Cudata()
    for idx, x in enumerate(cu_data):
        print(x.shape)
        save_image(x, './image_folder/out_{}.jpeg'.format(idx))
    

    图片原图大小是

    torch.Size([3, 1104, 736])
    

    执行 transforms.Resize(120)后图片大小为

    torch.Size([3, 180, 120]) 
    

    执行transforms.CenterCrop(120)后图片大小为

    torch.Size([3, 120, 120])
    

    所以执行代码后会得到一个不怎么会拉伸变形又包含大部分图像信息的正方形图片

     transforms.Compose([
                transforms.ToTensor(),
                transforms.Resize(120),
                transforms.CenterCrop(120),
            ])
    

    相关文章

      网友评论

          本文标题:transforms的resize和CenterCrop

          本文链接:https://www.haomeiwen.com/subject/fospmltx.html