0 Python图像处理库
- 常用的有OpenCV, Pillow(PIL)和scikit-image. 比较常用的是前两个,做个简单的比较。
- OpenCV
- 原版OpenCV是基于C++的,现在使用的是python版本。
- 处理速度快
- 读取图片直接就是numpy ndarray类型
- 读取图片是(B,G,R)通道,比较特殊
-image.shape
得到的是(H,W,C) - Pillow
- Pytorch中比较常用
- 读取图片是PIL Image格式,需要进一步转换为numpy ndarray类型
-image.size
得到的是(W,H) - 有比较说明OpenCV处理速度优势比较大,Python Pillow 和 cv2 图片 resize 速度的比较
Pillow基本操作
读取图像
Image.open(filename)
- 不像opencv需要根据图像类型指定
flag
,PIL会将图像自动读取为所需的格式,保存为Image对象。如,4-channel的PNG图像将会保留所有通道。 - 当PIL读取图像遇到格式错误时,会有报错提醒
- 采用此方法无法读取3-channel,32-bit float的TIFF图像。(我测试过,但opencv可以)
保存图像
imgObj.save(filename)
实现Padding
PIL的Image没有找到直接padding的方法,可以手动实现一下:
例如右侧padding 10个像素
p = Image.new('RGB', (w+10, h), (255, 255, 255))
p.paste(image, (0, 0, w, h))