欠伸展肢体,吟咏心自愉。这篇文章主要讲述python 包之 Pillow 图像处理教程相关的知识,希望能为你提供帮助。
一、安装
- 被认为是python官方图像处理库
- PIL非常适合于图像归档以及图像的批处理任务。可以使用PIL创建缩略图,转换图像格式,打印图像等等
- PIL支持众多的GUI框架接口,可以用于图像展示
- PIL库同样支持图像的大小转换,图像旋转,以及任意的仿射变换
pip install Pillow
二、打开图片
from PIL import Image
im = Image.open("picture.jpg")
im.show()
三、转换格式并保存
from PIL import Image
im = Image.open("picture.jpg")
im.save("result.png")
四、创建缩略图
from PIL import Image
im = Image.open("picture.jpg")
im.thumbnail((128, 128))
im.save("result.jpg")
五、获取图片属性
- 获取图像的来源,如果图像不是从文件读取它的值就是None。
from PIL import Image
im = Image.open("picture.jpg")
print(im.format)
六、图片信息
from PIL import Image
im = Image.open("picture.jpg")
print(im.info)
【python 包之 Pillow 图像处理教程】
七、调色板
- 如果图像的模式是“P”,则返回Image Palette类的实例;否则,将为None
from PIL import Image
im = Image.open("picture.jpg")
print(im.palette)
八、画板
- 使用给定的变量mode和size生成画板
from PIL import Image
im= Image.new("RGB", (128, 128), "#FF0000")
im.show()
九、图片模式
- 图像的模式,常见如下
- L:8位像素,黑白
- P:9位像素,使用调色板映射到任何其他模式
- 1:1位像素,黑白图像,存成8位像素
- RGB:3*8位像素,真彩
- RGBA:4*8位像素,真彩+透明通道
- CMYK:4*8位像素,印刷四色模式或彩色印刷模式
- YCbCr:3*8位像素,色彩视频格式
- I:32位整型像素
- F:33位浮点型像素
from PIL import Image
im = Image.open("picture.jpg")
print(im.mode)
十、模式转换
- 将当前图像转换为其他模式,并且返回新的图像
from PIL import Image
im = Image.open("picture.jpg")
new_im = im.convert(L)
print(new_im.mode)
new_im.show()
十一、矩阵模式转换
- 使用转换矩阵将一个“RGB”图像转换为“L”或者“RGB”图像
from PIL import Image
im = Image.open("picture.jpg")
print(im.mode)
matrix = (0.412453,0.357580, 0.180423, 0,
0.212671,0.715160, 0.072169, 0,
0.019334,0.119193, 0.950227, 0 )
new_im = im.convert("L", matrix)
print(new_im.mode)
new_im.show()
十二、图片尺寸
- 获取图像的尺寸,按照像素数计算,它的返回值为宽度和高度的二元组
from PIL import Image
im = Image.open("picture.jpg")
print(im.size)
十三、通道分离
- 返回当前图像各个通道组成的一个元组
- 分离一个 RGB 图像将产生三个新的图像
- 分别对应原始图像的每个通道红、绿、蓝三张图片
from PIL import Image
im = Image.open("picture.jpg")
r,g,b = im.split()
print(r.mode)
print(r.size)
print(im.size)
十四、复制、裁剪、粘贴、合并
from PIL import Image
im = Image.open("picture.jpg")
# 复制
im.copy()
# 裁剪
im.crop((100, 100, 400, 400))
# 将一张图粘贴到另一张图像上
im.paste(im.transpose(Image.ROTATE_180),im)
# 合并类使用一些单通道图像,创建一个新的图像
Image.merge("RGB", im.split())
十五、几何变换
- Image类有resize()、rotate()和transpose()、transform()方法进行几何变换
from PIL import Image
im = Image.open("picture.jpg")
# 修改尺寸
im.resize((128, 128))
# 角度旋转
im.rotate(45)
# 返回当前图像的翻转或者旋转的拷贝
# 值为:FLIP_LEFT_RIGHT,FLIP_TOP_BOTTOM,ROTATE_90,ROTATE_180,ROTATE_270
im.transpose(Image.ROTATE_90)
# 用给定的尺寸生成一张新的图像,与原图有相同的模式
im.transform((200, 200), Image.EXTENT, (0, 0, 300, 300))
十六、高级图片处理
- 使用ImageEnhance对象就能快速地进行设置。 可以调整对比度、亮度、色平衡和锐利度
from PIL import Image
from PIL import ImageEnhance
im = Image.open("picture.jpg")
enh = ImageEnhance.Contrast(im)
enh.enhance(1.3).show("30% more contrast")
十七、滤波器处理
from PIL import Image
from PIL import ImageFilter
im = Image.open("picture.jpg")
# 均值滤波
im1 = im.filter(ImageFilter.BLUR)
# 找轮廓
im2 = im.filter(ImageFilter.推荐阅读
- MySQL主从复制与读写分离
- 4月活动|春日学习正当时,一起挑战21天发文打卡
- 图计算 101(图计算的类型语言与系统)
- Tomcat实战案例(JPress 的安装部署)
- 前端开发(JS中关于去重操作的使用)
- HTTP协议经典面试题整理及答案详解
- 老王读Spring Transaction-3TransactionDefinition原理和源码解析
- 状态机引擎在vivo营销自动化中的深度实践 | 引擎篇02
- 详解Apache Hudi如何配置各种类型分区