如何用python的PIL包简单的处理图像


文章目录

  • 如何用python的PIL包简单的处理图像
  • 前言
  • 一、PIL是什么?
  • 二、使用步骤
  • 1.安装库
  • 2.引入库
  • 3.读入数据
  • 4.读取图片尺寸
  • 5.图像缩放
  • 6.图片保存



前言

在这里并不推荐大家用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')