本篇内容主要讲解“Python怎么对图片进行resize、裁剪、旋转、翻转”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python怎么对图片进行resize、裁剪、旋转、翻转”吧!
首先我们的原始图片是10张网上下载尺寸不一的图片,如下:
from PIL import Image
import torchvision.transforms as transforms
#使用PIL库读入图片并进行resize
def 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))
#图像随机剪裁和中心剪裁
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))
#随机旋转
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))
#图片依概率翻转,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、中心裁剪、翻转、随机裁剪和随机旋转的结果
这个是一段学过的简单程序,可以改变图像的大小,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、裁剪、旋转、翻转”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://blog.csdn.net/weixin_43896259/article/details/106307316