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库处理图像

 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)

锐度增强

色度增强

对比度增强

亮度增强

 欢迎留言 !

猜你喜欢

转载自www.cnblogs.com/SGzhang/p/10683904.html