PIL(Python Imaging Library,图像处理类库) 提供了通用的图像处理功能,以及大量有用的基本图像操作,比如:打开显示,灰度转换,图像缩放,旋转,裁剪等。本文并包含 PIL 所有功能模块的讲解,而是从实用角度给出最常用的方法。要获取 PIL 所有功能模块的文档,可参考文末给出的链接。
pip install Pillow导入:
from PIL import Imageimage = Image.open("dog.jpeg")image.show()
不会改变原来数据,因此需要定义新变量保存灰度化后的图片数据。
image_gray = image.convert("L")
会改变原来数据,但保存前,不会改变磁盘上的图片。
width = 80
height = 80
size = (width, height)
image.thumbnail(size)
image_gray.save("dog_gray.jpeg")
image.save("dog_thumb.jpeg")缩略图方法 thumbnail(size) 的底层调用,不同的是,缩放不会改变原来数据。
image_gray_resize = image_gray.resize((80, 80))
image_gray_rotate = image_gray.rotate(90)
image_gray_flip_h = image_gray.transpose(Image.FLIP_LEFT_RIGHT)
image_gray_flip_v = image_gray.transpose(Image.FLIP_TOP_BOTTOM)
虽然裁剪不属于几何变换的范畴,但是在应用场景上,我们常常和 缩放,旋转,镜像等几何变换,一起用。例如,训练 CNN 图像分类,对有限的训练集数据进行扩充增强,以提高模型的范化能力,获得更佳的模型表现。
img = Image.open("dog.jpeg")
print("origin image size\nwidth: {}\nheight: {}".format(*img.size))
crop_box = (80, 80, 240, 240)
img_crop = img.crop(crop_box)
print("cropped image size\nwidth: {}\nheight: {}".format(*img_crop.size))
img_crop.save("dog_crop.jpeg")origin image size
width: 320
height: 320
cropped image size
width: 160
height: 160