1_pillow模块批量 读取图像、旋转、放缩、裁剪图片等操作(20190104)

版权声明:本文为博主原创文章,转载而不修改内容请留言告知,转载并修改内容请与我联系 https://blog.csdn.net/weixin_41010198/article/details/85789199

1_pillow模块批量 读取图像、旋转、放缩、裁剪图片等操作(20190104

文章目录


pillow 模块是一个图像处理模块


1、pillow的安装和导入

  1. pillow 模块的安装
pip install pillow
或
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pilllow       # 可以提高下载速度
  1. pillow模块的导入

注意:

pillow模块导入的时候,并不是直接导入模块的名字
导入 from PIL import Image

2、pillow 读取、放缩、旋转、左右翻转、上下翻转图片操作

# -*- coding: UTF-8 -*-

from PIL import Image

# 1、读取图像
im = Image.open('images/2019-01-04 001456.jpg')

# 2、显示图片
im.show()

# 3、放缩图片: 原图像缩放为128x128
im_resized = im.resize((128, 128))
im_resized.show()


# print(dir(im))
'''
['_Image__transformer', '__array_interface__', '__class__', '__copy__', '__del__', '__delattr__', 
 '__dict__', '__dir__', '__doc__', '__enter__', '__eq__', '__exit__', '__format__', '__ge__',
 '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__',
 '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', 
 '__setattr__', '__setstate__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__',
 '_close_exclusive_fp_after_loading', '_copy', '_crop', '_dump', '_ensure_mutable', '_exclusive_fp',
 '_expand', '_getexif', '_getmp', '_min_frame', '_new', '_open', '_repr_png_', '_seek_check',
 'alpha_composite', 'app', 'applist', 'bits', 'category', 'close', 'convert', 'copy', 'crop', 
 'decoderconfig', 'decodermaxblock', 'draft', 'effect_spread', 'filename', 'filter', 'format', 
 'format_description', 'fp', 'frombytes', 'fromstring', 'get_format_mimetype', 'getbands', 'getbbox',
 'getchannel', 'getcolors', 'getdata', 'getextrema', 'getim', 'getpalette', 'getpixel', 'getprojection', 
 'height', 'histogram', 'huffman_ac', 'huffman_dc', 'icclist', 'im', 'info', 'layer', 'layers', 'load',
 'load_djpeg', 'load_end', 'load_prepare', 'load_read', 'mode', 'offset', 'palette', 'paste', 'point',
 'putalpha', 'putdata', 'putpalette', 'putpixel', 'pyaccess', 'quantization', 'quantize', 'readonly', 
 'remap_palette', 'resize', 'rotate', 'save', 'seek', 'show', 'size', 'split', 'tell', 'thumbnail',           # 对图像的一些操作方法
 'tile', 'tobitmap', 'tobytes', 'toqimage', 'toqpixmap', 'tostring', 'transform', 'transpose', 'verify', 'width']
'''




# 4、旋转图片: 指定旋转的角度
img_rotate = im.rotate(45)       # 旋转之后的图片的大小并不会发生变化,旋转的留白区域会用黑色填充
img_rotate.show()


# 5、翻转图片:图像的翻转用 transpose()函数,直接在入参中指定变换方式即可,不仅支持上下、左右翻转;也支持逆时针90、180、270等角度的旋转,效果与rotate()相同。示例如下:

out_lr = im.transpose(Image.FLIP_LEFT_RIGHT)   # 左右翻转
out_lr.show()
out_tb = im.transpose(Image.FLIP_TOP_BOTTOM)   # 上下翻转
out_tb.show()
# out = img.transpose(Image.ROTATE_90)    # 逆时针旋转九十度
# out = img.transpose(Image.ROTATE_180)
# out = img.transpose(Image.ROTATE_270)
# out.show()

3、pillow批量操作图片

没有什么好说的,就是对上面的操作从图片改成图片集,然后加入循环即可。

__Author__ = 'Shliang'

# 批量旋转图片

import os
from PIL import Image


def rotate_imgs(input_imgs_dir, output_imgs_dir):
    images = os.listdir(input_imgs_dir)
    print(images)
    for i, img in enumerate(images):
        # print(type(i))
        print('======', img, '======')
        img_src = Image.open(input_imgs_dir + "/" + img)  # 忘记加了前面的文件夹的名字,所以提示找不到这个文件
        # img_src.show()
        singles = [15, 30, 45, 315, 330, 345]   # 旋转不同的角度
        for num, s in enumerate(singles):
            img_rotate = img_src.rotate(s)        # 其他的操作只要更改一下这里的函数就可以   s: 角度
            img_rotate.save(output_imgs_dir + "/" + '_' + str(num) + '_' + img)
            # img_rotate2 = img_src.rotate(30)
            # img_rotate2.save(output_imgs_dir + "/" + str((i)) + img)


if __name__ == "__main__":
    input_imgs_dir = "aligned_dlib160"
    output_imgs_dir = "rotate_images"
    if not os.path.exists(output_imgs_dir):
        os.mkdir(output_imgs_dir)
    rotate_imgs(input_imgs_dir, output_imgs_dir)

后续更新,请持续关注

猜你喜欢

转载自blog.csdn.net/weixin_41010198/article/details/85789199