pillow 模块是一个图像处理模块
pip install pillow
或
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pilllow # 可以提高下载速度
注意:
pillow模块导入的时候,并不是直接导入模块的名字
导入: from PIL import Image
# -*- 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()
没有什么好说的,就是对上面的操作从图片改成图片集,然后加入循环即可。
__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)
后续更新,请持续关注
♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠