今天我们就来给大家介绍一下PIL库的使用方法。
什么是PIL库Pillow库(有时也称PIL库)是Python图像处理的基础库。
它是一个免费开源的第三方库,由一群Python社区志愿者使用Python语言开发而成。
Pillow提供了强大的图像处理功能,能够轻松地完成一些图像处理任务。
与Python的其他图像处理库相比(OpenCV、Scikit-image等),Pillow库简单易用,适合初学者学习。
Pillow库提供了丰富的功能,主要有以下几点:
Pillow库能够轻松的读取和保存各种格式的图片;
Pillow库提供了简洁易用的API接口,可以完成许多图像处理任务;
Pillow库能够配合GUI(图形用户界面)软件包Tkinter一起使用;
Pillow库中的Image对象能够与NumPy ndarray数组实现相互转换。
PIL库的安装
我们来到终端,输入pip install Pillow便可进行安装。
安装完毕后,可以在python中执行from PIL import Image用来检验是否安装成功。
PIL库的应用
首先,我们先了解如何打开图片文件。
在Python中,我们通过from PIL import Image导入图片处理的功能模块,再利用Image提供的.open()函数,输入需要打开的图片路径作为参数即可打开图片文件,获取一个图片对象。
from PIL import Imageimg=Image.open('0.jpg')# 利用Image.open('图片文件路径')可以打开图片文件并返回一个文件对象print(img.size)# 图片文件对象调用.size可以获取图片的尺寸信息
获取图片对象后,我们就能对图片进行各种操作啦。
让我们看看PIL库除了修改图片尺寸和裁剪图片外,还能对图片做些什么吧!
旋转图片
当我们想把图像旋转任意角度时,可以使用 rotate() 函数,语法格式如下:
Image.rotate(angle, resample=PIL.Image.NEAREST, expand=None, center=None, translate=None, fillcolor=None)
参数说明如下:
angle:表示任意旋转的角度;
resample:重采样滤波器,默认为 PIL.Image.NEAREST 最近邻插值方法;
expand:可选参数,表示是否对图像进行扩展,如果参数值为 True 则扩大输出图像,如果为 False 或者省略,则表示按原图像大小输出;
center:可选参数,指定旋转中心,参数值是长度为 2 的元组,默认以图像中心进行旋转;
translate:参数值为二元组,表示对旋转后的图像进行平移,以左上角为原点;
fillcolor:可选参数,填充颜色,图像旋转后,对图像之外的区域进行填充。
示例:
from PIL import Image
im = Image.open("0.jpg")
#translate的参数值可以为负数,并将旋转图之外的区域填充为绿色
#返回同一个新的Image对象
im_out=im.rotate(45,translate=(0,-25),fillcolor="blue")
im_out.show()
im_out.save("0_旋转图像.jpg")
合并图片
Image 类提供的 merge() 方法可以实现图像的合并操作。
注意,图像合并,可以是单个图像合并,也可以合并两个以上的图像。
merge() 方法的语法格式如下:
Image.merge(mode, bands)
参数说明如下:
mode:指定输出8图片的模式;
bands:参数类型为元组或者列表序列,其元素值是组成图像的颜色通道,比如 RGB 分别代表三种颜色通道,可以表示为 (r,g,b)。
两张图片的合并操作也并不复杂,但是要求两张图片的模式、图像大小要保持一致,否则不能合并。
因此,对于那些模式、大小不同的图片要进行预处理。
示例:
from PIL import Image
#打开图2.jpg
im_1 = Image.open("0.jpg")
im_2= Image.open("flower.jpg")
#因为两种图片的图片格式一致,所以仅需要处理图片的大小,让它们保持一致
#让 im_2 的图像尺寸与 im_1 一致,注意此处新生成了 Image 对象
image = im_2.resize(im_1.size)
#接下来,对图像进行颜色分离操作
r1, g1 ,b1 = im_1.split()
r2, g2 , b2 = image.split()
# 合并图像
im_3 = Image.merge('RGB',[r2,g1,b2])
im_3.show()
im_3.save("C:/Users/Administrator/Desktop/合成.jpg")
和Numpy数组之间的转化
图片对象还可以直接转换为numpy的narray形式。
示例代码:
from PIL import Image
import numpy as np
im_1 = Image.open("0.jpg")
np_um_1=np.array(im_1)
print(np_um_1.shape)
#输出为(750,750,3) 输出一个三个通道数组,每个通道为一个750*750的二维数组
总结
以上便是常用的一些PIL库功能。
但PIL的功能远不止于此,想要学习更多关于它的使用,可以去翻阅官方文档学习哦!
扫码二维码 获取免费视频学习资料
- 本文固定链接: http://phpxs.com/post/11241/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料
查 看2022高级编程视频教程免费获取