Python图像处理基础
对我个人而言使用Python图像处理意在取代matlab,集中化使用Python环境保证之后在机器学习和OpenCV的使用上具有一致性,虽然从实验室师兄师姐的口中得知Python的图像处理较之matlab相对复杂(应该只是代码量的问题),但我依然觉得学习python环境比较实用和高效。在进行Python图像处理之前,Pillow是不可或缺的实用性工具,pillow是Python Imaging Library的缩写,Pillow由PIL而来,导入该库使用import PIL。同时感谢Python社区内的翻译工作者,将pillow的英文稳当翻译为汉语文档。传统的PIL库不支持python3,所以使用从PIL派生出来的Pillow库。
从学习PIL开始
Python Imaging Library ( PIL ) 给 Python 增加了图像处理能力。这个库提供了广泛的文件格式支持,高效的内部展现,以及十分强大的图像处理能力。以下为我们常用的图像处理功能:
- 图像存储
PIL 设计用于图像归档和图像批量处理,可以使用它建立缩略图,转换格式,打印图片等。现在的版本可以验证和读取大量的图片格式。写入有意设计为只能写入常用的文件格式。 - 图像显示
现在的版本包含了 Tk PhotoImage 和 BitmapImage 接口, 以及 Windows DIB interface ,这有助于在 Windows 下使用。
为了方便测试,还提供了 show() 方法,可以保存图像到磁盘并显示。 - 图像处理
这个库包含了基本的图像处理功能,包括点操作,使用内置卷积内核过滤,色彩空间转换。支持更改图像大小、旋转、自由变换。有一个直方图方法允许你统计图像,这可以用于对比度增强和全局统计分析。
使用 Image 类
要从文件加载图像,使用 open() 函数, 在 Image 模块:
@zhangziju
from PIL import Image ##调用库
im = Image.open("E:\mywife.jpg") ##文件存在的路径
im.show()
需要知道的是在win的环境下im.show的方式为win自带的图像显示应用。
@zhangziju
from PIL import Image
im = Image.open("E:\mywife.jpg")
print(im.format, im.size, im.mode) ## 打印出关键信息
im.show()
JPEG (750, 560) RGB ## 输出关键信息 同时再次看到我老婆
format 这个属性标识了图像来源。如果图像不是从文件读取它的值就是None。
size属性是一个二元元组,包含width、height(宽度和高度,单位都是px)。mode 属性定义了图像bands的数量和名称,以及像素类型和深度。
常见的modes 有 “L” (luminance) 表示灰度图像,“RGB”表示真彩色图像,和 “CMYK” 表示出版图像。如下表为常见的nodes描述。
modes | 描述 |
---|---|
1 | 1位像素,黑和白,存成8位的像素 |
L | 8位像素,黑白 |
P | 8位像素,使用调色板映射到任何其他模式 |
RGB | 3× 8位像素,真彩 |
RGBA | 4×8位像素,真彩+透明通道 |
CMYK | 4×8位像素,颜色隔离 |
YCbCr | 3×8位像素,彩色视频格式 |
I | 32位整型像素 |
F |