本文主要讲述了如何使用torchvision
将图片转换为张量(tensor)及如何将张量(tensor)对应的图片进行保存。这里的tensor不管是不是3通道的都能够进行保存(因为我看了一些其他的保存方式要求tensor必须是3通道,即RGB,才能保存)。但是保存一张维度为[1, 512, 512]
的图,保存成图片后读取这张图片,得到的维度会是[3, 512, 512]
。
一、图片转张量(tensor)
# 导入必要的包
from PIL import Image
from torchvision.transforms import transforms
# 定义ToTensor的transform
transform = transforms.Compose([transforms.ToTensor()])
# 读入指定路径下的图片
image = Image.open('./metallic_roughness/metallic_roughness_6.jpg')
# 这里对图片应用transform,就转换为了张量
roughness_simage = transform(image)
# 转换为了张量就可以对张量进行任意操作了,以下是我应用需求的一些操作
# 因为我读入的图片是将两个材质属性合并到了一张图像上(3通道),所以我需要把一张图像里的两个属性分开并保存
roughness_chunk = roughness_simage.chunk(3)
roughness = roughness_chunk[1]
二、张量(tensor)转图片
这里的代码接上面的,当我们得到了我们想要保存的tensor,只需要使用这个torchvision.utils
里的函数
from torchvision.utils import save_image
save_image(roughness, './check.jpg')
三、结果
转张量前的图片是这样的:
经读取、处理并保存后得到的图片是这样的(把roughness通道读出并保存了):