(二)transforms的使用


前言

接着我的上一篇介绍transforms的内容,所以我写了这一篇


一、使用步骤

1.代码

代码如下(示例):

from PIL import Image
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms
#python的用法-》tensor数据类型
#通过transforms.ToTensor去看问题
writer=SummaryWriter("logs")           #与第16行相对应
img_path="data/train/ants_image/0013035.jpg"
img=Image.open(img_path)               #根据图片路径,打开图片,将图片信息赋值给img变量
print(img)                             #打印图片信息

#1、transforms该如何使用(python)
#ToTensor
trans_totensor=transforms.ToTensor()      #根据transforms下的ToTensor创建trans_totensor类
img_tensor=trans_totensor(img)            #调用trans_totensor类,把之前放好的图片进行tensor转换
print(img_tensor)                         #打印tensor类型信息
writer.add_image("img_tensor",img_tensor) #用于可视化图片,返回torch.Tensor的图片
print(img_tensor[0][0][0])                #打印第一层第一行第一列

#2、Normalize
trans_norm=transforms.Normalize([0.5,0.5,0.5],[0.5,0.5,0.5]) #3个通道的平均值,3个通道的标准差
img_norm=trans_norm(img_tensor)           #调用trans_norm类,把之前放好的图片进行归一化
print(img_norm[0][0][0])                  #打印经过tensor类型转换和归一化后的第一层第一行第一列
writer.add_image("Normalize",img_norm,2)  #用于可视化图片,返回归一化后的图片
print(img.size)

#3、Resize
trans_resize=transforms.Resize((512,512)) #根据transforms下的Resize创建trans_resize类,(512,512)是裁剪到多大
img_resize=trans_resize(img)              #调用trans_resize类,把之前的图片进行resize
#img PIL->resize->img_resize PIL
print(img_resize)                         #resize后的图片格式是PIL
img_resize=trans_totensor(img_resize)     #把img_size PIL格式的转换成totensor格式,才能进行可视化
#img_resize PIL->totensor->img_resize totensor
writer.add_image("Resize",img_resize,0)   #用于可视化图片,返回resize后的图片
print(img_resize)                         #打印resize后的图片大小

#4、Compose-resize-2  一般用compose把多个步骤整合到一起
trans_resize_2=transforms.Resize(512)     #如果大小是int,图像的较小边缘将与该数字匹配。
#PIL->PIL->tensor
trans_compose=transforms.Compose([trans_resize_2,trans_totensor])
                                          #compose的用法见官方文档,其实【】里就是序列,这里就是用compose将resize和totensor两个步骤整合到一起
img_resize_2=trans_compose(img)
print(img_resize_2)
writer.add_image("Compose-resize-2",img_resize_2,1)

#5、RandomCrop
trans_random=transforms.RandomCrop((500,500))
trans_compose_2=transforms.Compose([trans_random,trans_totensor])
for i in range(10):                        #随机裁剪10次
    img_crop=trans_compose_2(img)
    writer.add_image("RandomCrop",img_crop,i)#用于可视化图片,返回随机裁剪后的图片
writer.close()

总结

借鉴小土堆的视频


猜你喜欢

转载自blog.csdn.net/weixin_69398563/article/details/126298723