学习记录02:如何用python的PIL包简单的处理图像
如何用python的PIL包简单的处理图像
前言
在这里并不推荐大家用cv2的图像处理包去处理图象,因为他无法访问中文路径下的图片,读取的值是NONE,这有时候就很恼火了,所以今天记录一下怎么用PIL包简单处理图像。
提示:以下是本篇文章正文内容,下面案例可供参考
一、PIL是什么?
Pillow库是一个Python的第三方库。
在Python2中,PIL(Python Imaging Library)是一个非常好用的图像处理库,但PIL不支持Python3,所以有人(Alex Clark和Contributors)提供了Pillow,可以在Python3中使用。
二、使用步骤
1.安装库
虽然Python3提供的是Pillow,但是在安装时,我们还是直接安装PIL。
pip install pillow
2.引入库
代码如下(示例):
from PIL import Image
3.读入数据
代码如下(示例):
img = Image.open("E:/数据集/0426b97_45d.jpg") #这里都是绝对地址的写法,也可以写成E:\\数据集\\guofeng1\\0426b97_45d.jpg
img.show() #展示图片
4.读取图片尺寸
这里读取到的图片没有shape,只有size,可以像下面这样读取:
a = img.size #输出为(1224, 1024)
也可以将其赋值给其他变量:
a = img.size #a被赋值(1224, 1024)
a = img.size[0] #a被赋值1224
a = img.size[1] #a被赋值1024
注意这里无法查看通道数,如果要查看,可以通过以下代码查看:
print(len(img.split())) #这里将输出3,split将图像颜色通道分成单独的波段,统计其个数就可以得到通道数
5.图像缩放
resize(size, resample=BICUBIC, box=None, reducing_gap=None): 缩放图片,返回缩放后的图片。有4个参数。
size, 图片缩放后的尺寸,传入一个长度为2的元组(width, height)。
resample, 重采样,是一个可选的重采样过滤器。可以传入Image.NEAREST, Image.BOX, Image.BILINEAR, Image.HAMMING, Image.BICUBIC, Image.LANCZOS。默认过滤器为Image.BICUBIC。如果图像的模式为’1’或’P’,则始终设置为Image.NEAREST。
box, 缩放图片的区域。传入长度为4的元组(x1, y1, x2, y2),这个区域必须在原图的(0, 0, width, height)范围内,如果超出范围会报错,如果不传值则默认将整张原图进行缩放。(x1, y1)相当于裁剪区域的左上角坐标,(x2, y2)相当于裁剪区域的右下角坐标。
reducing_gap, 减少间隙。传入一个浮点数,用于优化图片缩放效果,默认不进行优化,值大于3.0时优化效果基本已经是公平的重采样。
img_resize = img.resize((500, 400), resample=Image.LANCZOS, box=(100, 100, 1200, 800), reducing_gap=5.0)
6.图片保存
img.save('d:/dog.jpg')
上一篇: 喝酒不能开车