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库处理图像
1 from PIL import Image 2 from PIL import ImageFilter 3 from PIL import ImageEnhance 4 im=Image.open("余文乐.jpg") 5 im.thumbnail((300,400)) 6 im.save("余文乐TN.jpg") 7 r,g,b=im.split() 8 newg=g.point(lambda i:i*0.9) 9 newb=b.point(lambda i:i<100) 10 om=Image.merge(im.mode,(r,newg,newb)) 11 om.save("余文乐Merge.jpg") 12 om=Image.merge("RGB",(b,g,r)) 13 om.save("余文乐BGR.jpg") 14 am=im.filter(ImageFilter.CONTOUR) 15 am.save("余文乐CONTOUR.jpg") 16 bm=ImageEnhance.Contrast(im) 17 bm.enhance(20).save("余文乐EnContrast.jpg")
效果图
原图
去光线图 轮廓图 20倍对比度增强效果图
缩略图
1 from PIL import Image 2 from PIL import ImageEnhance 3 def BrightnessEnhancement(brightness): 4 # ''' 5 # #亮度增强 :brightness在(0-1)之间,新图像较原图暗,在(1-~)新图像较原图亮 , 6 # ##brightness=1,保持原图像不变;可自定义参数范围 7 # ''' 8 image = Image.open(filepath) 9 enh_bri = ImageEnhance.Brightness(image) 10 # brightness =1.5 11 image_brightened = enh_bri.enhance(brightness) 12 image_brightened.show() 13 def ContrastEnhancement(contrast): 14 # ''' 15 # #对比度增强: 可自定义参数contrast范围,contrast=1,保持原图像不变 16 # ''' 17 image = Image.open(filepath) 18 enh_con = ImageEnhance.Contrast(image) 19 # contrast =1.5 20 image_contrasted = enh_con.enhance(contrast) 21 image_contrasted.show() 22 def ColorEnhancement(color): 23 # ''' 24 # #色度增强 : 饱和度 color=1,保持原图像不变 25 # ''' 26 image = Image.open(filepath) 27 enh_col = ImageEnhance.Color(image) 28 # color =0.8 29 image_colored = enh_col.enhance(color) 30 image_colored.show() 31 32 def SharpnessEnhancement(sharpness): 33 # ''' 34 # #锐度增强: 清晰度 sharpness=1,保持原图像不变 35 # ''' 36 image = Image.open(filepath) 37 enh_sha = ImageEnhance.Sharpness(image) 38 # sharpness = 2 39 image_sharped = enh_sha.enhance(sharpness) 40 image_sharped.show() 41 if __name__ =="__main__": 42 filepath = '余文乐.jpg' 43 #原始图像 44 brightness = 1.5 45 contrast = 0.2 46 color=1.9 47 sharpness=0.1 48 BrightnessEnhancement(brightness) 49 ContrastEnhancement(contrast) 50 ColorEnhancement(color)
锐度增强
色度增强
对比度增强
亮度增强
欢迎留言 !