ImageEnhance 模块
内置的 ImageEnhance 模块中包含了多个用于增强图像效果的函数,主要用来调整图像
的色彩、对比度、亮度和清晰度等,感觉上和调整电视机的显示参数一样。
在模块 ImageEnhance 中,所有的图片增强对象都实现一个通用的接口。这个接口只包
含如下一个方法。
方法 enhance()会返回一个增强的 Image 对象,参数 factor 是一个大于 0 的浮点数,1 表
示返回原始图片。
当在 Python 程序中使用模块 ImageEnhance 增强图像效果时,需要首先创建对应的增强
调整器,然后调用调整器输出函数,根据指定的增强系数(小于 1 表示减弱,大于 1 表示增
强,等于 1 表示原图不变)进行调整,最后输出调整后的图像。
在模块 ImageEnhance 中,常用的内置函数如下所示:
(1)ImageEnhance.Color(image ) :功能是调整图像色彩平衡,相当于彩色电视机的色彩调整,实现了上边提到的接口的enhance 方法。
(2)ImageEnhance.Contrast(image ):功能是调整图像对比度,相当于彩色电视机的对比度调整。
(3)ImageEnhance.Brightness(image ):功能是调整图像亮度。
(4)ImageEnhance.Sharpness(image ):功能是调整图像清晰度,用于锐化/钝化图片。
锐化操作的 factor 是 0~2 之间的一个浮点数。当 factor=0 时,返回一个模糊的图片对象;当 factor=2 时,返回一个锐化的图片对象;当 factor=1 时,返回原始图片对象。
锐化(Sharpening):
锐化是一种图像处理技术,旨在增强图像中的细节和边缘,使它们看起来更清晰和更突出。
锐化通过增强图像中像素之间的对比度来实现,从而使边缘更加清晰。这通常会使图像看起来更加清晰。
锐化通常用于强调图像中的细节,使图像看起来更加清晰和有视觉冲击力。
钝化(Blurring):
钝化是一种图像处理技术,旨在减少图像中的细节和边缘的清晰度,使其看起来更加模糊或柔和。
钝化通过模糊图像中的像素来实现,从而减少细节和边缘的清晰度。这通常用于柔化图像或减少噪点。
钝化可以用于减轻图像中的噪声、平滑皮肤纹理或创建艺术效果。
因此,锐化和钝化都是常见的图像处理技术,用于改变图像的外观和细节水平。选择使用哪种处理取决于您想要实现的效果以及图像的特定要求
ImageDraw 模块
ImageDraw 模块实现了绘图功能。可以通过创建图片的方式来绘制 2D 图像;还可以在原有的图片上进行绘图,已达到修饰图片或对图片进行注释的目的。
在 ImageDraw 模块绘图时需要首先创建一个 ImageDraw.Draw 对象,并且提供指向文件的参数。然后引用创建的 Draw 对象方法进行绘图。最后保存或直接输出绘制的图像。
python
drawObject=ImageDraw.Draw(black)
绘制直线
表示以(x1,y1)为起始点,以(x2,y2)为终止点画一条直线。[x1,y1,x2,y2]也可以写为(x1,y1,x2,y2)、[(x1,y1),(x2,y2)]等;fill 用于设置指定线条颜色;width 设置线条的宽度;joint表示一系列线之间的联合类型。它可以是"曲线"。
python
drawObject.line([x1,y1,x2,y2],fill = None,width = 0,joint = None )
绘制圆弧
在左上角坐标为(x1,y1),右下角坐标为(x2,y2)的矩形区域内,满圆 O 内,以 start 为起始角度,以 end 为终止角度,截取圆 O 的一部分圆弧并画出来。如果[x1,y1,x2,y2]区域不是正方形,则在该区域内的最大椭圆中根据角度截取片段。参数 fill 和 width 与 line 方法相
同。
python
drawObject.arc([x1,y1,x2,y2],start,end,fill = None,width = 0 )
绘制椭圆
python
drawObject.ellipse([x1,y1,x2,y2],fill = None,outline = None,width = 0 )
绘制弦
python
drawObject.chord([x1,y1,x2,y2],start,end,fill = None,outline = None,width = 0 )
用法同 arc 类似,用于画圆中从 start 到 end 的弦。fill 表示弦与圆弧之间空间用指定颜色填满,设置为 outline 表示只规定弦线的颜色。
绘制扇形
python
drawObject.pieslice([x1,y1,x2,y2],start,end,fill = None,outline = None,width = 0 )
用法同 elipse 类似,用于画起止角度间的扇形区域。fill 表示将扇形区域用指定颜色填
满,设置为 outline 表示只用指定颜色描出区域轮廓。
绘制多边形
drawObject.polygon([x1,y1,x2,y2,...],fill = None,outline = None )
根据坐标画多边形,Python 会根据第一个参量中的(x,y)坐标对,连接出整个图形。
fill 表示将多边形区域用指定颜色填满,outline 只用于设置指定颜色描出区域轮廓。
绘制矩形
python
drawObject.rectangle([x1,y1,x2,y2],fill = None,outline = None,width = 0 )
在指定的区域内画一个矩形,(x1,y1)表示矩形左上角的坐标,(x2,y2)表示矩形右
下角的坐标。fill 用于将矩形区域颜色填满,outline 用于描出区域轮廓。
绘制矩形
python
drawObject.rectangle([x1,y1,x2,y2],fill = None,outline = None,width = 0 )
在指定的区域内画一个矩形,(x1,y1)表示矩形左上角的坐标,(x2,y2)表示矩形右
下角的坐标。fill 用于将矩形区域颜色填满,outline 用于描出区域轮廓。
绘制文字
python
drawObject.text(position,text,fill = None,font = None,anchor = None,spacing = 0,
align ="left",direction = None,features = None,language = None )
在图像内添加文字 。其中参数 position 是一个二元组,用于指定文字左上角的坐标;text
表示要写入的文字内容;fill 表示文本的颜色;font 必须为 ImageFont 中指定的 font 类型;
spacing 表示行之间的像素数;align 表示位置"left","center"或"right";direction 表示文字的方向。它可以是'rtl'(从右到左),'ltr'(从左到右)或'ttb'(从上到下)。
python
from PIL import Image, ImageDraw
img = Image.open("lena.jpg")
draw = ImageDraw.Draw(img)
width, height = img.size
draw.arc( (0, 0, width-1, height-1), 0, 360, fill='blue')
img.save("circle.jpg")
ImageFont 模块
ImageFont 的功能是实现对字体和字型的处理。比较常用的内置函数如下所示:
(1)load():从指定的文件中加载一种字体,该函数返回对应的字体对象。如果该函数运行
失败,那么将产生 IOError 异常。语法格式如下:
python
ImageFont.load(文件名)
(2)load_path():和函数 load()一样,但是如果没有指定当前路径,就会从文件 sys.path 开
始查找指定的字体文件。语法格式如下:
python
ImageFont.load_path(文件名)
(3)truetype():有两种定义格式。第 1 种格式的功能是加载一个 TrueType 或者 OpenType
字体文件,并且创建一个字体对象。在 Windows 系统中,如果指定的文件不存在,加载器就会顺便看看 Windows 的字体目录下它是否存在。语法格式如下:
python
ImageFont.truetype(file,size)
第 2 种格式的功能是,加载一个 TrueType 或者 OpenType 字体文件,并且创建一个字体对象。通常的编码方式是"unic"(Unicode)、"symb"(MicrosoftSymbol)、"ADOB"
(Adobe Standard)、"ADBE"(Adobe Expert)和"armn"(Apple Roman)。语法格式如下:
python
ImageFont.truetype(file,size,encoding=value)
(4)load_default():功能是加载一种默认的字体。
python
ImageFont.load_default()
(5)getsize():返回给定文本的宽度和高度,返回值是一个二元组。具体语法格式如下:
python
ImageFont.getsize()