P12.常见的transforms(二)
12.1Resize使用
1.Resize使用1_输入的size为sequence
【注:“忽略大小写,进行提示匹配”的设置:一般情况下,你需要输入R,才能提示出Resize;我们想设置,即便你输入的是r,也能提示出Resize,也就是忽略了大小写进行匹配提示】
步骤如下:

(1)对Resize()的官方介绍

up主的pycharm对input类型的要求:PIL类型

我的pycharm对input类型没有要求诶:

(2)代码如下:
点击查看代码
from PIL import Image
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms
img = Image.open("images/myphoto.png")
print(img)
writer = SummaryWriter("logs1")
#ToTensor
#trans_tensor是transforms.ToTensor这个类的实例化,trans_tensor是一个对象
trans_tensor = transforms.ToTensor()
img_tensor = trans_tensor(img)
writer.add_image("ToTensor",img_tensor)
# writer.close()
# #Normalize
# print(img_tensor[0][0][0])
#
# trans_norm = transforms.Normalize([0.5,0.5,0.5],[0.5,0.5,0.5])
# img_norm = trans_norm(img_tensor)
# writer.add_image("ToNormalize",img_norm)
#
# print(img_norm[0][0][0])
# writer.close()
#Resize -1 输入一个sequence
print(img.size)
trans_resize = transforms.Resize((512,512))
#img_resize = trans_resize(img) 【img:PIL -> resize -> img_resize:PIL】
#img_resize = trans_tensor(img_resize) 【img_resize:PIL-> ToTensor ->img_resize:tensor(会覆盖掉原来的img_resize)】
img_resize = trans_resize(img_tensor) #【img:tensor -> resize img_resize:tensor】
writer.add_image("Resize",img_resize)
writer.close()
(3)运行结果
①input类型为PIL类型

②input类型为tensor类型

2.Resize_2(size为整数int)使用
①size为sequence例如(h,w)时,输出的size就是该尺寸;②size为int即一个数,输出的图片size就等比例缩放
点击查看代码
#resize -2 输入一个int
trans_resize_2 = transforms.Resize(512)
12.2Compose()使用
1.Compose()用法
Compose()中的参数需要是一个列表
Python中,列表的表示形式为[数据1,数据2,.]
在Compose中,数据需要是transforms类型
所以得到,Compose([transforms参数1,transforms参数2...])
2.代码如下:
点击查看代码
#Compose - resize -2 输入一个int
trans_resize_2 = transforms.Resize(512)
#compose([a1,a2]) 前面的输出即a1的类型须匹配后面的输入即a2 img:PIL -> Resize:PIL -> ToTensor:tensor(PIL->tensor)
trans_compose = transforms.Compose([trans_resize_2,trans_tensor])
img_resize_2 = trans_compose(img)
writer.add_image("Resize_2",img_resize_2)
writer.close()
3.运行

12.3RandomCrop()使用
1.代码
点击查看代码
#RandomCrop
trans_rancrop = transforms.RandomCrop(512)
trans_compose2 = transforms.Compose([trans_rancrop,trans_tensor])#先对其随机裁剪再转化为tensor数据类型
for i in range(10):
img_rancrop = trans_compose2(img)
writer.add_image("RandomCrop",img_rancrop,i)
writer.close()
2.运行结果


12.4总结使用方法
1.up主总结
(1)关注输入和输出类型
(2)关注官方文档
(3)关注方法需要什么参数
(4)不知道返回值类型的时候可以试错或者搜索(print,print(type0),debug)

2.举例
任意打开一个类和函数
eg.Padding需要设置,其他参数如fill,padding_mode可以默认不设置:


浙公网安备 33010602011771号