欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

学习记录02:如何用python的PIL包简单的处理图像

程序员文章站 2022-05-28 14:22:44
...

如何用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')