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

 更新时间:2023年05月04日 09:34:17   作者:是康康啊  
这篇文章主要介绍了Python对图片进行resize、裁剪、旋转、翻转问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

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

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

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

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

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

从上到下每行依次为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+smtplib库实现邮件发送功能

    Python+smtplib库实现邮件发送功能

    这篇文章主要为大家详细介绍了Python如何通过smtplib库实现简单的邮件发送功能,文中的示例代码借鉴一下,有需要的小伙伴可以参考一下
    2025-02-02
  • python实现双人五子棋(终端版)

    python实现双人五子棋(终端版)

    这篇文章主要为大家详细介绍了python实现终端版的双人五子棋,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-12-12
  • Python相关库设置技巧保护你的C盘

    Python相关库设置技巧保护你的C盘

    这篇文章主要为大家介绍了Python相关库设置,保护你的C盘技巧详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • Python 文件批量处理操作的实现示例

    Python 文件批量处理操作的实现示例

    Python提供了丰富的工具来处理文件批量操作,包括批量重命名文件、移动文件和修改文件内容,具有一定的参考价值,感兴趣的可以了解一下
    2024-12-12
  • matplotlib.pyplot画图 图片的二进制流的获取方法

    matplotlib.pyplot画图 图片的二进制流的获取方法

    今天小编就为大家分享一篇matplotlib.pyplot画图 图片的二进制流的获取方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • python re模块常见用法例举

    python re模块常见用法例举

    在本篇文章里小编给大家整理的是一篇关于python re模块常见用法例举内容,有兴趣的朋友们可以学习下。
    2021-03-03
  • Python生成器以及应用实例解析

    Python生成器以及应用实例解析

    这篇文章主要介绍了Python生成器以及应用实例解析,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • pytorch如何自定义forward和backward函数

    pytorch如何自定义forward和backward函数

    PyTorch自动求导功能强大,但在特定情况下需要用户自行定义backward函数,通过实例解释了保存变量、计算梯度、链式法则等核心概念,并展示了如何通过自定义函数集成到网络中以及如何正确返回梯度,此外,还讨论了多输出情况下的梯度传递
    2024-10-10
  • Python 中字符串修饰符详解

    Python 中字符串修饰符详解

    这篇文章主要介绍了Python中字符串修饰符的相关知识,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-06-06
  • 使用BeautifulSoup4解析XML的方法小结

    使用BeautifulSoup4解析XML的方法小结

    这篇文章主要介绍了使用BeautifulSoup4解析XML的方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12

最新评论