对图片进行resize、裁剪、旋转、翻转首先我们的原始图片是10张网上下载尺寸不一的图片,如下:
操作1:resize 将图片resize到相同尺寸(320,240)from pil import imageimport torchvision.transforms as transforms#使用pil库读入图片并进行resizedef resizeimage(): if not os.path.exists(rdir): os.makedirs(rdir) for i in range(10): im = image.open(dir+str(i)+".jpg") im = im.resize((320,240),image.bilinear) #第一个参数为想要的size,第二个参数为插值方法,双线性插值这里用的是 im.save('{}/{}.jpg'.format(rdir, i))
操作2:剪裁(包括围绕中心剪裁和随机剪裁)#图像随机剪裁和中心剪裁def crop(lib): for i in range(10): img = image.open(lib+"/"+str(i)+".jpg") centercrop = transforms.centercrop((240,320)) #中心裁剪 cropped_image = centercrop(img) #pil.image.image # im=np.array(cropped_image) #可以将pil.image.image转成ndarry #cropped_image.show() #将图片显示 cropped_image.save('{}/cen_crop{}.jpg'.format(rdir, i)) randomcrop = transforms.randomcrop(size=(240, 320)) #随机剪裁 random_image = randomcrop(img) random_image.save('{}/rand_crop{}.jpg'.format(rdir, i))
操作3:随机旋转#随机旋转def random_rotation(lib): for i in range(10): img = image.open(lib+"/"+str(i)+".jpg") rr = transforms.randomrotation(degrees=(10, 80)) #degrees为随机旋转的角度 rr_image = rr(img) rr_image.save('{}/rand_rotation{}.jpg'.format(rdir, i))
操作4:翻转#图片依概率翻转,p为翻转的概率def horizontal_flip(lib): for i in range(10): img = image.open(lib+"/"+str(i)+".jpg") hf = transforms.randomhorizontalflip(p=1.0) #p为概率,缺省时默认0.5 hf_image = hf(img) hf_image.save('{}/hori_flip{}.jpg'.format(rdir, i))
下面展示一下操作后的图片:
从上到下每行依次为resize、中心裁剪、翻转、随机裁剪和随机旋转的结果
单张图像变换大小——img.resize()这个是一段学过的简单程序,可以改变图像的大小,jpg,png都可以的:
#encoding=utf-8#author: walker#date: 2014-05-15#function: 更改图片尺寸大小from pil import image'''filein: 输入图片fileout: 输出图片width: 输出图片宽度height:输出图片高度type:输出图片类型(png, gif, jpeg...)'''def resizeimage(filein, fileout, width, height, type): img = image.open(filein) out = img.resize((width, height),image.antialias) #resize image with high-quality out.save(fileout, type)if __name__ == "__main__": filein = r'0.jpg' fileout = r'testout.png' width = 6000 height = 6000 type = 'png' resizeimage(filein, fileout, width, height, type)
这个函数img.resize((width, height),image.antialias)
第二个参数:
image.nearest :低质量
image.bilinear:双线性
image.bicubic :三次样条插值
image.antialias:高质量
以上就是python怎么对图片进行resize、裁剪、旋转、翻转的详细内容。