今天我在使用torchvision.transforms.Resize()
的时候发现,一般Resize中放的是size或者是(size,size)这样的二元数。
这两个里面,torchvision.transforms.Resize((size,size))
,大家都很清楚,会将图像的h和w大小都变成size。
但是,第一种用法,torchvision.transforms.Resize(size)
,我最开始的时候,就不知道,到底是只转换一个边长,还是转换两个边长,还是说转换一个边长,另一个边长等比例放缩。
经过自己测试,发现torchvision.transforms.Resize(size)
是将最短边长变成size,长边进行比例缩放,也就是最短边为size,最长边大于size。
from PIL import Image
from torchvision import transforms
# 使用PIL库中的Image模块打开图像文件
img = Image.open('images/styles/starry_night.jpg')
# 打印原始图像的尺寸
print("原图尺寸:", img.size)
# 创建transforms.Resize对象,指定缩放大小为[256, 256]
resize = transforms.Resize(256)
# resize = transforms.Resize([256, 256])
# 使用resize对象对图像进行缩放
img2 = resize(img)
# 打印缩放后图像的尺寸
print("缩放后尺寸:", img2.size)
# 显示缩放后的图像
img2.show()
运行结果如下:
可以发现是短边进行size的调整,长边进行相应的缩放,最后导致图像进行等比例放缩。