PIL(Python Image Library)是Python提供的图像处理标准库,来满足开发者处理图像的各种功能
PIL支持的图像文件格式包括JPEG、PNG、GIF等,它提供了图像创建、图像显示、图像处理等功能;但是Python2.7后不再支持
Pillow是基于PIL模块Fork的一个派生分支,如今已经发展成为比PIL本身更具活力的图像处理库,Pillow模块支持python3
Pillow库是一个非常强大的基础图像处理库,是计算机图像识别的基础,主要模块有:Image模块、ImageChops通道操作模块)、ImageColor颜色转换模块、ImageDraw二维图形模块等
Pillow参考学习网站:https://www.osgeo.cn/pillow/reference/
安装:
pip install Pillow==9.5.0
图像具有如下基本概念:深度(Depth)、通道(Bands)、模式(Mode)、坐标系(Coordinate System)等
1)深度(Depth)
深度是指图像中像素点占得Bit位数
二值图像: 图像的像素点不是0就是1(图像不是黑色就是白色),图像像素点占的位数是1位,图像的深度是1,也称位图
灰度图像: 图像的像素点位于0-255之间(0代表全黑,255代表全白),在0-255之间插入了28=255个等级的灰度,图像像素点占的位数是8位,图像的深度是8
2)通道(Bands)
每张图像都是由一个或多个数据通道构成
RGB是基本的三原色(红色、绿色和蓝色),如果用8位代表一种颜色,那么每种颜色的最大值是255,这样每个像素点的颜色值范围就是(0-255,0-255,0-255),图像的通道是3,而灰度图像的通道是1
3)模式(Mode)
图像实际上是像素数据的矩形图,图像的模式定义了图像中像素的类型和深度
常见的模式有:
4)坐标系(Coordinate System)
PIL中图像的坐标是从左上角开始,向右下角延伸,以二元组(x,y)的形式传递,x轴从左到右,y轴从上到下,即左上角的坐标为(0, 0),因此矩形图像使用四元组表示,例如一个450x450像素的矩形图像可以表示为(0, 0, 450, 450)
from PIL import Image, ImageDraw, ImageFont
from io import BytesIO
import requests
1) 打开图像
'''
Image.open(file,mode)
mode:默认r可读
'''
# 1)打开图像文件
img1 = Image.open(r'C:\Users\cc\Desktop\cat.png')
# 2)从文件流中打开图像
resp = requests.get(r'http://f.hiphotos.baidu.com/image/pic/item/b151f8198618367aa7f3cc7424738bd4b31ce525.jpg')
img2 = Image.open(BytesIO(resp.content))
# 展示图像
img1.show()
img2.show()
# 图像旋转(逆时针)
img1.rotate(90).show()
2) 创建图像
'''
Image.new(mode,size,color)
mode:模式 size:大小(宽高),二元组类型,单位像素 color:颜色,可以使用颜色名、16进制或RGB数字
'''
img3 = Image.new('RGB', (450, 450), (255, 0, 0))
img3.show()
3) 转换格式(保存图像)
'''
Image.save(file)
'''
# 查看图像类型格式
print(img1.format)
# 另存为JPG类型的图片
img1