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库图像处理的更多相关文章

  1. Python 之 使用 PIL 库做图像处理

    http://www.cnblogs.com/way_testlife/archive/2011/04/17/2019013.html Python 之 使用 PIL 库做图像处理 1. 简介. 图像 ...

  2. python爬虫基础15-python图像处理,PIL库

    Python图像处理-Pillow 简介 Python传统的图像处理库PIL(Python Imaging Library ),可以说基本上是Python处理图像的标准库,功能强大,使用简单. 但是由 ...

  3. [转]Python 之 使用 PIL 库做图像处理

    Python 之 使用 PIL 库做图像处理 1. 简介. 图像处理是一门应用非常广的技术,而拥有非常丰富第三方扩展库的 Python 当然不会错过这一门盛宴.PIL (Python Imaging ...

  4. python图像处理之PIL库

    PIL库是python语言第三方库,需要通过pip工具安装,安装库的名字是pillow. PIL库支持图像存储,显示和处理,它能够处理几乎所有图片格式,可以完成对图像的缩放,裁剪,叠加以及向图像添加线 ...

  5. PIL库,图像处理第三方库

    PIL  ---> python imaging library 安装需要安装pillow库,包含了21种类,其中Image类是PIL最重要的一个类,可以通过它来处理图像. Python最常用的 ...

  6. 用PIL库进行图像处理

    一.如果系统里没有安装PIL库的,请先到命令提示符输入“pip install pillow”进行安装 二.之后就可以参考以下的代码 from PIL import Image from pylab ...

  7. 一秒钟带你走进P图世界-----(python)PIL库的使用

    python-----PIL库的使用 一.什么是PIL库 1.PIL(Python Image Library)库是python语言的第三方库,具有强大的图像处理能力,不仅包含了丰富的像素.色彩操作功 ...

  8. python之PIL库(Image模块)

    PIL(Python Image Library)是python的第三方图像处理库,PIL的功能非常的强大,几乎被认定是Python的官方图像处理库了. 由于PIL仅支持到python2.7于是一群志 ...

  9. 玩转PIL库

    1.安装pillow库: 在cmd下,输入简单的命令: pip install pillow  即可安装pillow库. 2.PIL库的简介: 1. PIL库主要有2个方面的功能: (1) 图像归档: ...

随机推荐

  1. oracle数据库查询语句case的用法

    实现功能: 1.先查询status=2的记录,如果查询到记录则返回第一条记录的Product_Name:2.如果查询不到status=2的记录,则判断status=1的记录是否存在,不存在则返回“请耐 ...

  2. Python学习—基础篇之常用模块

    常用模块 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要 ...

  3. 128bit 整数运算的实现

    对于128bit的长整型运算,GCC提供了扩展类型:__int128.然而该类型不在C/C++语言的标准之中,并且对于不同种类的编译器,它的实现情况不同.因此,在编写相关的可移植程序时,我们有必要实现 ...

  4. 【CPU微架构设计】利用Verilog设计基于饱和计数器和BTB的分支预测器

    在基于流水线(pipeline)的微处理器中,分支预测单元(Branch Predictor Unit)是一个重要的功能部件,它负责收集和分析分支/跳转指令的执行结果,当处理后续分支/跳转指令时,BP ...

  5. git常用方法

    一.创建项目 git clone xx.git         克隆项目到本地 git init                     初始化本地项目,生成.git文件 二.创建分支,推送分支,合并 ...

  6. 10.Redis分布式集群

    10.Redis分布式集群10.1 数据分布10.1.1 数据分布理论10.1.2 Redis数据分区10.1.3 集群功能限制10.2 搭建集群10.2.1 准备节点10.2.2 节点握手10.2. ...

  7. js如何实现重载

    所谓重载,就是一组相同的函数名,有不同个数的参数,在使用时调用一个函数名,传入不同参数,根据你的参数个数,来决定使用不同的函数!但是我们知道js中是没有重载的,因为后定义的函数会覆盖前面的同名函数,但 ...

  8. Subplot 分格显示

    1.subplot2grid 使用import导入matplotlib.pyplot模块, 并简写成plt. 使用plt.figure()创建一个图像窗口 import matplotlib.pypl ...

  9. Security.ssl-pinning

    SSL Pinning 1. What's SSL Pinning? "SSL Pinning is making sure the client checks the server’s c ...

  10. Shell脚本- 单条命令循环执行重复工作

    关于shell for循环具体详细说明可参考:http://wiki.jikexueyuan.com/project/linux-command/chap34.html example: 分别在com ...