PIL库图像处理
PIL有如下几个模块
Image模块、ImageChops模块、ImageCrackCode模块
ImageDraw模块、ImageEnhance模块、ImageFile模块
ImageFileIO模块、ImageFilter模块、ImageFont模块
ImageGrab模块、ImageOps模块、ImagePath模块
ImageSequence模块、ImageStat模块、ImageTk模块
ImageWin模块、PSDraw模块
下面仅介绍一下几种库,更全面介绍参考https://baijiahao.baidu.com/s?id=1595108270577043146&wfr=spider&for=pc
image模块
Image模块提供了一个相同名称的类,即image类,用于表示PIL图像。Image模块是PIL中最重要的模块,比如创建、打开、显示、保存图像等功能,合成、裁剪、滤波等功能,获取图像属性功能,如图像直方图、通道数等。
ImageEnhance模块
ImageEnhance模块包括一些用于图像增强的类。它们分别为Color类、Brightness类、Contrast类和Sharpness类。
ImageFilter模块
ImageFilter模块包括各种滤波器的预定义集合,与Image类的filter方法一起使用。该模块包含这些图像增强的滤器:
BLUR,CONTOUR,DETAIL,EDGE_ENHANCE
EDGE_ENHANCE_MORE,EMBOSS,FIND_EDGES
SMOOTH,SMOOTH_MORE和SHARPEN
PIL基本基本概念
PIL中所涉及的基本概念有如下几个:
通道(bands)、模式(mode)、尺寸(size)
坐标系统(coordinate system)、调色板(palette)
信息(info)和滤波器(filters)
通道
每张图片都是由一个或者多个数据通道构成。PIL允许在单张图片中合成相同维数和深度的多个通道。以RGB图像为例,每张图片都是由三个数据通道构成,分别为R、G和B通道。而对于灰度图像,则只有一个通道。对于一张图片的通道数量和名称,可以通过getbands()方法来获取。getbands()方法是Image模块的方法,它会返回一个字符串元组(tuple)。该元组将包括每一个通道的名称。Python的元组与列表类似,不同之处在于元组的元素不能修改,元组使用小括号,列表使用方括号,元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
用PIL库处理图像
from PIL import Image
from PIL import ImageFilter
from PIL import ImageEnhance
im=Image.open("余文乐.jpg")
im.thumbnail((300,400))
im.save("余文乐TN.jpg")
r,g,b=im.split()
newg=g.point(lambda i:i*0.9)
newb=b.point(lambda i:i<100)
om=Image.merge(im.mode,(r,newg,newb))
om.save("余文乐Merge.jpg")
om=Image.merge("RGB",(b,g,r))
om.save("余文乐BGR.jpg")
am=im.filter(ImageFilter.CONTOUR)
am.save("余文乐CONTOUR.jpg")
bm=ImageEnhance.Contrast(im)
bm.enhance(20).save("余文乐EnContrast.jpg")
效果图
原图




去光线图 轮廓图 20倍对比度增强效果图

缩略图
from PIL import Image
from PIL import ImageEnhance
def BrightnessEnhancement(brightness):
# '''
# #亮度增强 :brightness在(0-1)之间,新图像较原图暗,在(1-~)新图像较原图亮 ,
# ##brightness=1,保持原图像不变;可自定义参数范围
# '''
image = Image.open(filepath)
enh_bri = ImageEnhance.Brightness(image)
# brightness =1.5
image_brightened = enh_bri.enhance(brightness)
image_brightened.show()
def ContrastEnhancement(contrast):
# '''
# #对比度增强: 可自定义参数contrast范围,contrast=1,保持原图像不变
# '''
image = Image.open(filepath)
enh_con = ImageEnhance.Contrast(image)
# contrast =1.5
image_contrasted = enh_con.enhance(contrast)
image_contrasted.show()
def ColorEnhancement(color):
# '''
# #色度增强 : 饱和度 color=1,保持原图像不变
# '''
image = Image.open(filepath)
enh_col = ImageEnhance.Color(image)
# color =0.8
image_colored = enh_col.enhance(color)
image_colored.show() def SharpnessEnhancement(sharpness):
# '''
# #锐度增强: 清晰度 sharpness=1,保持原图像不变
# '''
image = Image.open(filepath)
enh_sha = ImageEnhance.Sharpness(image)
# sharpness = 2
image_sharped = enh_sha.enhance(sharpness)
image_sharped.show()
if __name__ =="__main__":
filepath = '余文乐.jpg'
#原始图像
brightness = 1.5
contrast = 0.2
color=1.9
sharpness=0.1
BrightnessEnhancement(brightness)
ContrastEnhancement(contrast)
ColorEnhancement(color)
锐度增强

色度增强

对比度增强

亮度增强

欢迎留言 !
PIL库图像处理的更多相关文章
- Python 之 使用 PIL 库做图像处理
http://www.cnblogs.com/way_testlife/archive/2011/04/17/2019013.html Python 之 使用 PIL 库做图像处理 1. 简介. 图像 ...
- python爬虫基础15-python图像处理,PIL库
Python图像处理-Pillow 简介 Python传统的图像处理库PIL(Python Imaging Library ),可以说基本上是Python处理图像的标准库,功能强大,使用简单. 但是由 ...
- [转]Python 之 使用 PIL 库做图像处理
Python 之 使用 PIL 库做图像处理 1. 简介. 图像处理是一门应用非常广的技术,而拥有非常丰富第三方扩展库的 Python 当然不会错过这一门盛宴.PIL (Python Imaging ...
- python图像处理之PIL库
PIL库是python语言第三方库,需要通过pip工具安装,安装库的名字是pillow. PIL库支持图像存储,显示和处理,它能够处理几乎所有图片格式,可以完成对图像的缩放,裁剪,叠加以及向图像添加线 ...
- PIL库,图像处理第三方库
PIL ---> python imaging library 安装需要安装pillow库,包含了21种类,其中Image类是PIL最重要的一个类,可以通过它来处理图像. Python最常用的 ...
- 用PIL库进行图像处理
一.如果系统里没有安装PIL库的,请先到命令提示符输入“pip install pillow”进行安装 二.之后就可以参考以下的代码 from PIL import Image from pylab ...
- 一秒钟带你走进P图世界-----(python)PIL库的使用
python-----PIL库的使用 一.什么是PIL库 1.PIL(Python Image Library)库是python语言的第三方库,具有强大的图像处理能力,不仅包含了丰富的像素.色彩操作功 ...
- python之PIL库(Image模块)
PIL(Python Image Library)是python的第三方图像处理库,PIL的功能非常的强大,几乎被认定是Python的官方图像处理库了. 由于PIL仅支持到python2.7于是一群志 ...
- 玩转PIL库
1.安装pillow库: 在cmd下,输入简单的命令: pip install pillow 即可安装pillow库. 2.PIL库的简介: 1. PIL库主要有2个方面的功能: (1) 图像归档: ...
随机推荐
- VirtualBox 休眠恢复后无法联网解决办法
环境:lubuntu 首先ifconfig查看网卡名,我这里是enp0s3. 接着: sudo ifconfig enp0s3 down sudo ifconfig enp0s3 up sudo dh ...
- python 编程
1.一个str A,列表B的所有元素都在A中时返回True A = 'HeooWoldHomeUbuntuCentOSFedora'B = ['Ubuntu', 'CentOS', 'Home', ' ...
- poj2886(线段树求序列第k小)
题目链接:https://vjudge.net/problem/POJ-2886 题意:n个人围成一个圈,每个人有姓名s和权值val两个属性,第一轮序号为k的人退出,并根据其val指定下一个人,val ...
- MySqlBulkLoader设置Columns时要注意的地方
在测试时发现有的表用MySqlBulkLoader一直加不上数据,经过检查,原来是因为表中的列名跟MYSQL的一个关键词对上了,所以在执行时把列名当做关键词进行处理了. LOAD DATA LOCAL ...
- IIS发布MVC ASP.NET网站
发布网站后,发现无法访问,最后在配置文件上添加一段: <system.codedom> <compilers> <compiler language="c#;c ...
- 使用Jmeter连接数据库检查数据库记录的方法
一.首先下载Jdbc驱动(jdbc驱动分两种,classes与ojdbc文件,该用哪个需要检查电脑安装的jdk版本(查看方法cmd命令java –version) 关于各种版本的说明:http://e ...
- Tableau可视化绘图教程
https://www.w3cschool.cn/tableau/tableau_environment_setup.html
- Rendering Problems Couldn't resolve resource @dimen/y20
(转)文章转自 songzi1228 的 https://blog.csdn.net/songzi1228/article/details/80255058 本人亲自试用,妥妥的解决了我的问题. R ...
- Spring @Value取值为null或@Autowired注入失败
@Value 用于注入.properties文件中定义的内容 @Autowired 用于装配bean 用法都很简单,很直接,但是稍不注意就会出错.下面就来说说我遇到的问题. 前两天在项目中遇到了一个问 ...
- C/C++字符串函数使用整理
#strlen+功能:求字符串长度.+说明:strlen(a) 函数类型常为int,返回字符串长度大小,参数为字符数组名,也可为字符串和指向字符串的指针.+使用样例: char a[ ]={" ...