Python对图片进行resize、裁剪、旋转、翻转问题

作者:是康康啊 时间:2023-03-01 11:07:05 

对图片进行resize、裁剪、旋转、翻转

图片处理时常用的手段有resize、裁剪、旋转、翻转,简单介绍一下python中怎么利用PIL库和torchvision库来对图片进行这几项操作。

首先我们的原始图片是10张网上下载尺寸不一的图片,如下:

Python对图片进行resize、裁剪、旋转、翻转问题

操作1:resize 将图片resize到相同尺寸(320,240)

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))

操作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))

下面展示一下操作后的图片:

Python对图片进行resize、裁剪、旋转、翻转问题

从上到下每行依次为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:高质量

来源:https://blog.csdn.net/weixin_43896259/article/details/106307316

标签:Python,resize,裁剪,旋转,翻转
0
投稿

猜你喜欢

  • Go语言中结构体方法副本传参与指针传参的区别介绍

    2024-05-05 09:29:45
  • Linux 下 Python 实现按任意键退出的实现方法

    2022-08-07 14:22:01
  • Go1.18新特性对泛型支持详解

    2024-05-22 17:46:25
  • Python生成随机数组的方法小结

    2023-10-09 08:19:41
  • python中的二维列表实例详解

    2022-03-26 05:17:11
  • 利用setuptools打包python程序的方法步骤

    2023-07-20 08:57:47
  • innodb_flush_method取值方法(实例讲解)

    2024-01-13 10:12:44
  • 使用Python导出Excel图表以及导出为图片的方法

    2021-02-28 09:59:21
  • 使用Python轻松完成垃圾分类(基于图像识别)

    2023-06-24 06:06:47
  • Python django框架输入汉字,数字,字符生成二维码实现详解

    2022-12-13 00:23:24
  • Python3多进程 multiprocessing 模块实例详解

    2022-05-27 11:11:51
  • 自己写的一个PJBlog中可以双击输入验证码的修改

    2009-05-17 10:51:00
  • Mysql 建库建表技巧分享

    2024-01-24 02:18:30
  • Python性能提升之延迟初始化

    2021-05-23 14:22:06
  • django DRF图片路径问题的解决方法

    2023-02-05 15:25:46
  • perl文件包含(do,require,use)指令介绍

    2023-05-29 04:33:08
  • python实现爬虫统计学校BBS男女比例之多线程爬虫(二)

    2021-05-10 03:08:18
  • Python爬虫实现爬取百度百科词条功能实例

    2021-01-09 06:23:30
  • 利用Pandas 创建空的DataFrame方法

    2022-07-11 17:25:05
  • Python时间模块datetime、time、calendar的使用方法

    2023-04-02 06:44:16
  • asp之家 网络编程 m.aspxhome.com