图像处理实战-Python编程进阶
pillow图像处理库
PIL(Python Imaging Library)是Python常用的图像处理库,但PIL仅支持到Python2.7,后一群志愿者在PIL的基础上创建了PIL的兼容版本Pillow
Pillow提供了广泛的文件格式支持,强大的图像处理能力,主要包括图像存储、图像显示、格式转换以及基本的图像处理操作等
Pillow扩展库主要功能
图像归档
对图像进行批处理、生成图像预览、图像格式转换等
图像处理
图像基本处理、像素处理、颜色处理
Pillow扩展库主要操作
在PIl中,任何一个图像文件都可以用Image对象表示
Image类的图像读取和创建方法
方法 | 描述 |
Image.open(filename) | 根据参数加载图像文件 |
Image.new(mode,size,color) | 根据给定参数创建一个新的图像 |
Image.open(StringIO,StringIO(buffer)) | 从字符串中获取图像 |
Image.frombytes(mode,size,data) | 根据像素点data创建图像 |
Image.verify | 对图像文件完整性进行检查,返回异常 |
Image类有4个处理图片的常用属性
属性 | 描述 |
Image.format | 表示图像格式或来源,如果图像不是从文件读取,值是none |
Image.mode | 图像的色彩模式,“L”灰度图像,“RGB”真彩色图像,“CMYK”出版图像 |
Image.size | 图像宽度和高度,单位是像素点(px),返回值是二元元祖(tuple) |
Image.palette | 调色板属性,返回一个ImagePalette类型 |
Image类的图像转换和保存方法
方法 | 描述 |
Image.save(filename,format) | 将图像保存为filename文件名,format是图片格式 |
Image.convert(mode) | 使用不同的参数,转换为图像为新的模式 |
Image.thumbnail(size) | 常见图像的缩略图,size是缩略图尺寸的二元元祖 |
生成缩略图,128*128是尺寸
from PIL import Image
im=Image.open("头像(1).jpg")
im.thumbnail((128,128))
im.save("img1","JPEG")
Image类能够对每个像素点或者一幅RGB图像的每个通道单独进行操作,split()方法能够将RGB图像个颜色通道提取出来,merge()方法能够将各独立通道再合成一幅新的图像。
方法 | 描述 |
Image.point(func) | 根据函数func功能对每个元素进行运算,返回图像副本 |
Image.split() | 提取rgb图像的每个颜色通道,返回图像副本 |
Image.merge(mode,bands) | 合并通道,采用mode色彩,bands是新色的色彩通道 |
Image.blend(im1,im2,alpha) |
将两幅图片im1和im2按照如下公式插值后生成洗呢图像:im1*(1.0-alpha)+im2*alpha |
颜色变换
from PIL import Image
im=Image.open("1.jpg")
r,g,b=im.split()
om=Image.merge("RGB",(b,g,r))#对RGB的颜色进行了调换
om.save('2.jpg')
PIL库的ImageFilter提供的过滤图像方法
方法表示 | 描述 |
ImageFilter.BLUR | 图像的模糊效果 |
ImageFilter.CONTOUR | 图像的轮廓效果 |
ImageFilter.DETALL | 图像的细节效果 |
ImageFilter.EDGE_ENHANCE | 图像的边界加强效果 |
ImageFilter.EDGE_ENHANCE_MODE | 图像的阈值边界加强效果 |
ImageFilter.EMBOSS | 图像的浮雕效果 |
ImageFilter.FIND_EDGES | 图像的边界效果 |
ImageFilter.SMOOTH | 图像的平滑效果 |
ImageFilter.SMOOTH_MORE | 图像的阈值平滑效果 |
ImageFilter.SHARPEN | 图像的锐化效果 |
生成图像模糊效果:套用滤镜
from PIL import Image
from PIL import ImageFilterim=Image.open("1.jpg")
om=im.filter(ImageFilter.BLUR)
#为图片使用模糊滤镜
om.save("3.jpg")
PIL库的ImageEnhance类提供了更高级的图像增强效果,提供调整色彩度、亮度、对比度、锐化等功能。
方法 | 描述 |
ImageEnhance.enhance(factor) | 对选择属性的数值增强factor值 |
ImageEnhance.Color(im) | 调整图像的颜色平衡 |
ImageEnhance.Contrast(im) | 调整图像的对比度 |
ImageEnhance.Brightness(im) | 调整图像的亮度 |
ImageEnhance.Sharpness(im) | 调整图像的锐度 |
高级图像增强实例
from PIL import Image
from PIL import ImageEnhanceim=Image.open("1.jpg")#调整图像对比库
om=ImageEnhance.Contrast(im)
#图像对比度增强3倍
om.enhance(3).save("4.jpg")
随机生成验证码
from PIL import Image,ImageDraw,ImageFont,ImageFilter
import random# 随机字母:(65-90表示26个大写英文字母)
def rndChar():return chr(random.randint(65, 90))# 随机颜色1:验证码背景颜色
def rndColor():return (random.randint(64, 255), random.randint(64, 255), random.randint(64, 255))# 随机颜色2:文本颜色
def rndColor2():return (random.randint(32, 127), random.randint(32, 127), random.randint(32, 127))# 240 x 60:
width = 60 * 4
height = 60
image = Image.new('RGB', (width, height), (255, 255, 255))
# 创建Font对象:
font = ImageFont.truetype('arial.ttf', 36)
# 创建Draw对象:
draw = ImageDraw.Draw(image)
# 填充每个像素:
for x in range(width):for y in range(height):draw.point((x, y), fill=rndColor())#fill随机颜色
# 输出文字:
for t in range(4):draw.text((60 * t + 10, 10), rndChar(), font=font, fill=rndColor2())
# 模糊:
image = image.filter(ImageFilter.BLUR)
image.save('code.jpg', 'jpeg')
图像处理实战-Python编程进阶相关推荐
- 自然语言处理实战-Python编程进阶
中文分词方法 基于字典.词库匹配的分词方法(基于规则) 将待分的字符串与一个充分大的机器词典中的词条进行匹配.常用的有:正向最大匹配,逆向最大匹配,最少切分法.实际应用中,将机械分词作为初分手段,利用 ...
- Excel文件处理实战-Python编程进阶
openpyxl库 openpyxl库特点 用于读取写入Excel2010 xlsx.xlsm.xltx.xltm文件的Python库 使用getter.setter模式.可以随时读取某个单元格的内容 ...
- 【编程之路】Python编程进阶
Python编程进阶 不使用中间变量,交换两个变量a和b的值. a, b = b, a 需要注意,a, b = b, a 这种做法其实并不是元组解包,虽然很多人都这样认为.Python 字节码指令中有 ...
- Python编程进阶,常用8大技巧!
选自medium,作者:Martin Heinz 机器之心编译 介绍 Python 炫酷功能(例如,变量解包,偏函数,枚举可迭代对象等)的文章层出不穷.但是还有很多 Python 的编程小技巧鲜被提及 ...
- 西瓜创客python编程进阶收费_西瓜创客和编程猫有什么不同?哪个更值得报名?...
看情况来决定即可,在课程内容上其实出入我觉得不是很大,重点是教学服务.师资.授课模式等,单纯我自己的角度来说,我个人偏向于西瓜创客多一点,他们家的课程更具有趣味性,游戏化教学,融入卡通人物,对孩子来说 ...
- 6.多个例子实战Python编程
本篇通过几个实用的例子来复习Python语法. 6.1 实战1:九九乘法表 本例技术点:打印小学乘法口诀表(练习for循环.字符串格式化). 我们看到的九九乘法口诀表如下图. 第一步:定义乘数x,即每 ...
- python对象编程例子-python编程进阶之类和对象用法实例分析
本文实例讲述了python类和对象用法.分享给大家供大家参考,具体如下: 前面我们都是用python面向过程编程,现在来用python创建类和对象,面向对象编程.类和对象是面向对象编程的两个主要方面. ...
- Python编程进阶,Python如何实现多进程?
进程part1 一.进程介绍 1.获取子父进程 2.进程的基本使用 2.创建带有参数的进程 3.进程之间的数据彼此隔离 4.多个进程之间的异步并发 二.join 1.基本语法 2.使用自定义类的方法创 ...
- Python编程进阶 高级变量(看完就会了)
文章目录 一.简介 1.目标 2.知识点回顾 3.非数字型变量的特点 二.字符串 1.下标索引 2.切片 (1)作用 (2)索引的顺序和倒序 (3)实例 3.find 4.index 5.count ...
最新文章
- codevs 2606 约数和(分块优化数学公式 )
- autowired 与 resources 注解的区别
- 一个历时五天的 Bug
- 一步一步搭建ELK日志处理集群(自己做过测试)
- strlcpy和strlcat——一致的、安全的字符串拷贝和串接函数
- Python调用Java代码部署及初步使用
- 新手上路教程4_其他-视图-触发器
- AppBoxPro - 细粒度通用权限管理框架(可控制表格行内按钮)源码提供下载
- android怎么阿看手机是移动联通还是电信的网络,GSM是联通、移动还是电信的网络?...
- 深度学习笔记_评分函数/损失函数
- 8月18日梦记录及分析
- 在同个工程中使用 Swift 和 Objective-C(Swift 2.0更新)-b
- Windows驱动的Checked (chk)和Free(fre)区别
- 云监控介绍 - Amazon CloudWatch
- 如何成为一名优秀的技术 Leader?(转)
- 豆豆趣事[2014年08月]
- 同花顺程序交易接口实现类
- 获取颜色值 抓取颜色值 获取颜色代码RGB
- 接口报错500是什么意思_HTTP 500错误是什么意思?
- [学位]燕山大学中文学术期刊目录(2020修订版)
热门文章
- 【难题+重点】剑指offer——面试题40:数组中只出现一次的数字
- CommonJS的值拷贝与ES6的动态映射
- 【机器学习】算法调参
- 【前端】CSS使用总结
- Latex中插入超链接/网址
- 四张类图理一下Streams的用法
- 2018-2019-2 网络对抗技术 20165322 Exp9 Web安全基础
- pyton random 模块
- 网络请求 get 请求时, 如果参数中的字符带有+号
- CMakeFiles/species.inc.dir/build.make:57: recipe for target 'CMakeFiles/species.inc' failed