Python图像处理入门:
第一章 PIL/Pillow的基本用法
Python用于数字图像处理时,常用的一个第三方库是PIL,全称为:Python Imaging Library。 PIL由Fredrik Lundh和一些志愿者开发,是Python平台一个功能较强而简单易用的图像处理库,但好像只能支持到Python 2.7版。后来Alex Clark和一些志愿者开发了PIL的一个Fork(大概为 “克隆”的意思),创建了兼容 Python 3 的Pillow。“Pillow is the friendly PIL fork”,这是[1]的第一句。
在图像处理方面,Pillow包含了基本的功能,包括点操作、用卷积核进行过滤、色彩空间转换等。 该库也支持图像的大小调整、旋转和任意仿射变换。 还可以通过直方图方法从图像中提取一些统计信息,用于自动对比度增强和全局统计分析。
本文是笔者学习和练习Pillow的笔记,软件环境是Windows10,PyCharm社区版和Jupyter Lab。主要内容来自文献 [1-2],并参考了[3]-[8]等文献。
注意,安装Pillow 之前,必须先卸载 PIL,具体的安装和升级方法可参见[1]中的Installation。
第一节 Pillow功能简介
Pillow库包含基本的图像处理功能,包括点操作、使用一组内置卷积核进行过滤以及色彩空间转换。 该库还支持图像大小调整、旋转和任意仿射变换。 有一种直方图方法允许您从图像中提取一些统计信息。 这可用于自动对比度增强和全局统计分析。
1使用图像类(Using the Image class)
PIL中最重要的类是 Image 类,在一个同名的模块中定义。可以通过多种方式创建此类的实例,例如从图像文件加载图像,处理其他图像,或创建新图像。 从图像文件加载图像时要使用 Image 模块中的 open() 函数:
>>> from PIL import Image
>>> im = Image.open("hopper.ppm")
如果成功,此函数将返回一个 Image 对象。 您现在可以使用实例属性来检查文件内容:
>>> print(im.format, im.size, im.mode)
PPM (512, 512) RGB
其中,format 属性用来标识图像来源,如果图像并不是从文件中读取的则其值为 None;size 属性是一个包含宽度和高度(以像素为单位)的 2 元数组; mode 属性给出图像中通道的数量和像素类型等信息。 常见的模式有“L”(亮度)用于灰度图像,“RGB”用于真彩色图像,“CMYK”用于印前图像。
如果无法打开文件,则会引发 OSError 异常。一旦有了 Image 类的实例,就可以使用该类的方法来处理和操作图像。 例如,让我们显示刚刚加载的图像:
>>> im.show()