简单来说就是调整PILImage对象的尺寸,注意不能是用io.imread或者cv2.imread读取的图片,这两种方法得到的是ndarray。
transforms.Resize(x) #将图片短边缩放至x,长宽比保持不变
而一般输入深度网络的特征图长宽是相等的,就不能采取等比例缩放的方式了,需要同时指定长宽:
transforms.Resize([h, w]) #指定宽和高
例如 transforms.Resize([224, 224]) 就能将输入图片转化成224×224的输入特征图。
这样虽然会改变图片的长宽比,但是本身并没有发生裁切,仍可以通过resize方法返回原来的形状:from PIL import Image from torchvision import transforms img = Image.open('G:/datasets/DSIFN/test(1)/t1/0.jpg') #读取一张遥感图片 w,h = img.size print(w,h) # 原图大小(512,512) #第一次裁剪,将图片转化为224*224大小,并保存为test.jpg文件(保存路径在当下文件中) resize = transforms.Resize([224,224]) img = resize(img) img.save('test.jpg') # (224,224) #第二次裁剪,将图片转化为512*512大小,并保存为test1.jpg文件 resize2 = transforms.Resize([h,w]) img = resize2(img) img.save('test1.jpg')
需要注意的一点是PILImage对象size属性返回的是w, h,而resize的参数顺序是h, w。
o.jpg
test.jpg
test1.jpg
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)