pytorch保存图片 save_image ,读取图片

保存图片主要使用save_image,定义如下:

torchvision.utils.save_image(tensor, filename, nrow=8, padding=2, normalize=False, range=None, scale_each=False)

注意:normalize=False代表只能将(0,1)的图片存储起来

           normalize=True将(0,255)的图片存储起来

具体介绍见torchvision.utils — Torchvision 0.10.0 documentation

 保存单张图片

保存的图片像素值本身就是在(0-1)内的图片

from torchvision.utils import save_image
a = torch.ones([3,100,100])
save_image(a,'white.png')
#像素值为(255,255,255)为白色
#但是save_image(normalize=False)接受的tensor范围为(0,1),超过1的按1算

 保存的图片像素值本身就是在(-1,1)内的图片

像素值出现在(-1,1)的原因是:

transforms.ToTensor()将图片归一化到(0,1)

 transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])])将图片归一化到(-1,1)

def de_norm(x):
    out = (x + 1) / 2
    return out.clamp(0, 1)
#image是在cuda上的一张图片
#所以image是由batch_size=1的情况下的
#image.size(1,3,256,256)所以要squeeze()一下
image = de_norm(image).squeeze()
save_image(image,'image_name.png')

保存多张图片

a = torch.ones([1, 3, 100, 100])
b = a * 0.6
c = a * 0.3
d = a * 0.1
images = torch.cat([a,b,c,d],dim=3)
print(images.size())        #torch.Size([1, 3, 100, 400])
save_image(images,'grid.png')

读取图片将PIL转为tensor

from PIL import Image
totensor = transforms.Compose([transforms.ToTensor()]) #将(0,255)-->(0,1)   
iamge = Image.open('red.png').convert('RGB')
image = totensor(image)
#也可以
#totenor = transforms.Compose([transform.ToTensor(),
#                              transforms.Normalize((0.5, 0.5, 0.5),
#                                        (0.5, 0.5, 0.5))])    #将(0,1)-->(-1,1)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值