开发者

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

开发者 https://www.devze.com 2023-05-05 09:58 出处:网络 作者: 是康康啊
目录对图片进行resize、裁剪、旋转、翻转操作1:resize 将图片resize到相同尺寸(320,240)操作2:剪裁(包括围绕中心剪裁和随机剪裁)操作3:随机旋转操作4:翻转单张图像变换大小——img.resize()总结对图
目录
  • 对图片进行resize、裁剪、旋转、翻转
    • 操作1:resize 将图片resize到相同尺寸(320,240)
    • 操作2:剪裁(包括围绕中心剪裁和随机剪裁)
    • 操作3:随机旋转
    • 操作4:翻转
  • 单张图像变换大小——img.resize()
    • 总结

      对图片进行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:剪裁(包括围绕中心剪裁和随机剪裁)

      #图像随机剪裁和中心剪vmupi裁
      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):
      http://www.devze.com    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))
      http://www.devze.com

      操作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.ANT编程客栈IALIAS)

      第二个参数:

      • Image.NEAREST :低质量
      • Image.BILINEAR:双线性
      • Image.BICUBIC :三次样条插值
      • Image.ANTIALIAS:高质量

      总结

      以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

      0

      精彩评论

      暂无评论...
      验证码 换一张
      取 消

      关注公众号