用Pillow操作图像处理中常用的模块和函数
用Pillow操作图像处理中常用的模块和函数:图像的组成:都是由像素组成的。像素点的描述:颜色值及其在图像中的位置。1.图像的属性size属性:表示图像的分辨率,即图像的宽和高(单位为像素),是一个二元的tuple,如(300,200),表示图像的宽为300,宽为200。mode属性:表示图像的模式,常用的模式为:L(luminance)表示灰度图,RGB表示真彩色图,CMYK表示出版图像。format属性:表示图像格式或来源,如果图像不是从文件读取,值为None。palette属性:表示调色板,返回一个ImagePalette类型2.图像空间坐标系统:图像中的默认坐标系为:左上角是坐标原点(0,0),水平向右X轴,垂直向下Y轴。3.图像的颜色表示:计算机通常将图像中像素点的值用RGB值表示,或者再加上alpha值(通透度,透明度),称为RGBA值。在Pillow中,RGBA的值表示为由4个整数组成的元组,分别是R、G、B、A,整数的取值范围0~255,如(255,0,0,255)代表红色,A为0表示透明,255表示不透明,当alpha值为0时,无论是什么颜色,该颜色都不可见。Image模块中最重要的类就是Image,它代表一张图片,可以通过以下几种方式实例化:从文件中读取图片,处理其他图片得到,或者直接创建一个图片。(1)从文件中读取图片,创建Image对象Image.open(filename)(2)处理其他图片得到Image对象Image.crop(rect)(3)直接新建空白图像Image.new(mode,size,color)除了open函数外,其他方法需要通过Image类的实例进行调用。(1)图像的读取和保存方法:读取图像:open(filename):filename为文件完整的路径表示,Pillow库支持相当多的图像格式。例如:Image.open("d:\图片1.jpg")保存图像:save(filename)函数:Image模块中的save()函数可以保存图像,该函数还可以提供第二个参数,用于指定文件的保存格式,如果没有第二个参数,那么文件名中的扩展名用来指定文件格式。例如:save("d:\图图.jpg")(2)显示图像方法:show():不需要参数,直接显示图像对象(3)从像中截取子图crop(rect):提供一个rect参数,表示截取子图在原始图像中的矩形区域。例如:rect=(50,50,200,150),crop(rect)表示新图为源图(50,50)到(199,149)这部分区域的子图(4)粘贴图像paste(Image,rect):第一个参数为Image对象,第二个参数为矩形对象,表示把第一个参数的图像贴到源图像的矩形区域出,注意第一个参数Image对象的size必须和矩形对象保证尺寸一致,此外,矩形区域不能在图像外。(5)几何变换方法:resize(size):缩放图像,提供一个tuple参数,表示新图像的大小。例如:resize((640,640)),表示新生成一个图像,新图像是源图像经过变换后,尺寸为640*640。rotate(angle):提供一个int参数,表示逆时针旋转的角度,0-360之间。例如:rotate(45)表示新图像是源图像逆时针旋转45度得来的。transpose(sign):提供一个符号常量,Pillow通过此函数对于一些常见的旋转作了专门的定义。例如:transpose(Image.ROTATE_90),表示逆时针旋转90度transpose(Image.FLIP_LEFT_RIGHT)左右对换。(6)色彩空间变换convert(string):提供一个字符串参数,表示图像的mode属性。该函数可以用来将图像转换为不同色彩模式,如将彩色图像转换为灰度图像等。例如:convert("L")。(7)图像滤波图像滤波,即在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像预处理中不可缺少的操作。在ImageFilter模块中,提供了图像滤波filter()函数,用于图像的滤波增强。filter(ImageFilter.function):提供一个参数,表示滤波增强的方式。在ImageFilter模块中,预先定义了很多增强滤波器。表10-1ImageFilter类的预定义过滤方法(8)图像增强图像滤波增强处理实质上就是运用滤波技术来增强图像的某些空间频率特征,以改善地物目标与领域或背景之间的灰度反差,如调节图像的颜色、对比度、饱和度和锐化等等。ImageEnhance.Contrast(Image):提供一个图像对象,调整图像的对比度ImageEnhance.Color(Image):提供一个图像对象,调整图像的颜色平衡ImageEnhance.enhance(factor):对选择属性的数值增强factor倍ImageEnhance.Brightness(Image):提供一个图像对象,调整图像的亮度ImageEnhance.Sharpness(Image):提供一个图像对象,调整图像的锐度ImageDraw模块中包含了ImageDraw类,它支持各种几何图形的绘制和文本的绘制,如直线、椭圆、弧、弦、多边形以及文字等。下面介绍ImageDraw类中的几个函数:Draw(image):创建一个可以在给定图像上绘图的绘图对象。例如:im=Image.open('d:\图片1.jpg')draw=ImageDraw.Draw(im)draw.arc(xy,start,end,options):在给定的区域内,在开始和结束角度之间绘制一条弧(圆的一部分)。例如:draw.arc((0,0,100,100),0,180,fill=(0,255,0)),表示在源图的(0,0)到(100,100)这个矩形内画一个圆,顺时针取0度到180度之间的半圆弧,半圆弧颜色为绿色draw.text(position,string,options):在给定的位置绘制一个字符。参数position给出了文本的左上角的位置,参数options的font用于指定所用字体。例如:draw.text((0,0),"Hello",fill=(0,255,0)),表示在源图的(0,0)位置绘制绿色的Hello。
作者:云创智学 来源:云创智学
发布时间:2022-01-14 09:58:58