Pytorch中Tensor与PIL图像格式相互转化

格式转换
我们一般在pytorch或者python中处理的图像无非这几种格式:

PIL:使用python自带图像处理库读取出来的图片格式
numpy:使用python-opencv库读取出来的图片格式
tensor:pytorch中训练时所采取的向量格式(当然也可以说图片)
注意:之后的讲解图片格式皆为RGB三通道,24-bit真彩色,也就是我们平常使用的图片形式。

PIL与Tensor

PIL与Tensor的转换相对容易些,因为pytorch已经提供了相关的代码,我们只需要搭配使用即可:

import torch
from PIL import Image
import matplotlib.pyplot as plt

使用 torchvision中自带的transforms函数

PIL读取图片转化为Tensor

loader = transforms.Compose([
transforms.ToTensor()])

Tensor转化成PIL图片

unloader = transforms.ToPILImage()
 

1.输入图片地址返回tensor变量

def image_loader(image_name):
image = Image.open(image_name).convert(‘RGB’)
image = loader(image).unsqueeze(0)
return image.to(device, torch.float)
 

2.输入PIL格式图片返回tensor变量

def PIL_to_tensor(image):
image = loader(image).unsqueeze(0)
return image.to(device, torch.float)
 

3.输入tensor变量输出PIL格式图片

def tensor_to_PIL(tensor):
image = tensor.cpu().clone()
image = image.squeeze(0)
image = unloader(image)
return image

图片保存

img.save('d:/dog.jpg')

你可能感兴趣的:(pytorch,python,深度学习)