第15章 Python图像处理_第1页
第15章 Python图像处理_第2页
第15章 Python图像处理_第3页
第15章 Python图像处理_第4页
第15章 Python图像处理_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第15章Python图像处理主讲夏敏捷计算机学院副教授15.1Python图像处理类库(PIL)安装PIL库的方法如下pipinstallpillow或者pip3installpillowPIL库主要可以实现图像归档和图像处理两方面功能需求。(1)图像归档:对图像进行批处理、生成图像预览、图像格式转换等。(2)图像处理:图像基本处理、像素处理、颜色处理等。根据功能不同,PIL库共包括21个与图像相关的类,这些类可以被看作是子库或PlL库中的模块,模块列表如下:Image、ImageChops、ImageCrackCode、ImageDraw、ImageEnhance、ImageFile、ImageFileIO、ImageFilter、ImageFont、ImageGrab、ImageOps、ImagePath、ImageSequence、ImageStat、ImageTk、ImageWin、PSDraw模块。15.2PIL库的Image类使用Image模块是PIL中最重要的模块,它提供了一个相同名称的类,即Image类,用于表示PIL图像。Image类的属性1.Format源文件的文件格式。2.Mode图像的模式。1:1位像素,表示黑和白,但是存储的时候每个像素存储为8bit。L:8位像素,表示黑和白。RGB:3x8位像素,为真彩色。RGBA:4x8位像素,有透明通道的真彩色。CMYK:4x8位像素,颜色分离。3.Size图像的尺寸,按照像素数计算。它的返回值为宽度和高度的二元组(width,height)。4.Info是存储图像相关数据的字典。PIL库的Image类使用Image模块是PIL中最重要的模块,它提供了一个相同名称的类,即Image类,用于表示PIL图像。转换图像格式通过Image类save()方法,PIL可以将图像保存成多种格式的文件。创建缩略图使用PIL可以很方便地创建图像的缩略图。thumbnail()法接受一个元组参数(该参数指定生成缩略图的大小),然后将图像转换成符合元组参数指定大小的缩略图。复制和粘贴图像区域使用crop()方法可以从一幅图像中裁剪指定区域。box=(100,100,400,400)region=im.crop(box)PIL库的Image类使用调整尺寸和旋转要调整一幅图像的尺寸,我们可以调用resize()方法。该方法的参数是一个元组,用来指定新图像的大小:out=im.resize((128,128))要旋转一幅图像,可以使用逆时针方式表示旋转角度out=im.rotate(45)#逆时针旋转45度转换成灰度图像Image模块的convert()函数,用于不同模式图像之间的转换。fromPILimportImage#或直接importImageim=Image.open('a.jpg')im1=im.convert('L')#将图片转换成灰度图对像素进行操作getpixel(x,y)获取指定像素的颜色PIL库的Image类使用调整尺寸和旋转要调整一幅图像的尺寸,我们可以调用resize()方法。该方法的参数是一个元组,用来指定新图像的大小:out=im.resize((128,128))要旋转一幅图像,可以使用逆时针方式表示旋转角度out=im.rotate(45)#逆时针旋转45度转换成灰度图像Image模块的convert()函数,用于不同模式图像之间的转换。fromPILimportImage#或直接importImageim=Image.open('a.jpg')im1=im.convert('L')#将图片转换成灰度图对像素进行操作getpixel(x,y)获取指定像素的颜色ImageFilter类ImageFilter类ImageFilter模块提供了滤波器相关定义;这些滤波器主要用于Image类的filter()方法。1.BLURImageFilter.BLUR为模糊滤波,处理之后的图像会整体变得模糊。ImageFilter类ImageFilter类2.CONTOURImageFilter.CONTOUR为轮廓滤波,将图像中的轮廓信息全部提取出来。3.DETAILImageFilter.DETAIL为细节增强滤波,会使得图像中细节更加明显。4.EDGE_ENHANCEImageFilter.EDGE_ENHANCE为边缘增强滤波,突出、加强和改善图像中不同灰度区域之间的边界和轮廓的图像增强方法。经处理使得边界和边缘在图像上表现为图像灰度的突变,用以提高人眼识别能力。5.EDGE_ENHANCE_MOREImageFilter.EDGE_ENHANCE_MORE为深度边缘增强滤波,会使得图像中边缘部分更加明显。6.EMBOSSImageFilter.EMBOSS为浮雕滤波,会使图像呈现出浮雕效果。7.FIND_EDGESImageFilter.FIND_EDGES为寻找边缘信息的滤波,会找出图像中的边缘信息。ImageFilter类PIL模块中有一个叫做ImageEnhance的类,该类专门用于图像的增强处理,不仅可以增强(或减弱)图像的亮度、对比度、色度,还可以用于增强图像的锐度。ImageEnhance类1.Coordinates坐标ImageDraw绘图接口使用和PIL一样的坐标系统,即(0,0)为左上角。2.Colours颜色为了指定颜色,用户可以使用数字或者元组。对于模式为“1”,“L”和“I”的图像,使用整数。对于“RGB”图像,使用整数组成的3元组。对于“F”图像,使用整数或者浮点数。3.Fonts字体PIL可以使用bitmap字体或者OpenType/TrueType字体。15.4ImageDraw类使用ImageDraw类的方法1.Draw创建一个可以在给定图像上绘图的对象。注意图像内容将会被修改。fromPILimportImage,ImageDrawblank=Image.new("RGB",[1024,768],"white")#新建一个空白图片draw=ImageDraw.Draw(blank)

#创建一个绘图对象15.4ImageDraw类使用2.Arcarc(xy,start,end,options)在给定的区域xy内,在开始start和结束end角度之间绘制一条弧(圆的一部分)。options选项中fill设置弧的颜色。draw.arc((0,0,200,200),0,90,fill=(255,0,0))#在(0,0,200,200)区域红色绘制90度的弧3.Chordchord(xy,start,end,options)和方法arc()一样,但是使用直线连接弦弧起点和终点。15.4ImageDraw类使用4.Ellipseellipse(xy,options)在给定的区域绘制一个椭圆形。5.Lineline(xy,options)在变量xy列表所表示的坐标之间画线。6.Rectanglerectangle(box,options)绘制一个矩形。15.4ImageDraw类使用7.Bitmapbitmap(xy,bitmap,options)在给定的区域里绘制变量bitmap所对应的位图,变量bitmap位图应该是一个有效的透明模板(模式为“1”)或者蒙版(模式为“L”或者“RGBA”)。这个方法与Image.paste(xy,color,bitmap)有相同的功能。8.Texttext(position,string,options)在给定的位置绘制一个字符串。15.4ImageDraw类使用在已有的test.jpg图片上添加线条和“你好”文字。fromPILimportImage,ImageDraw,ImageFontimg=Image.open('d:\\test.jpg')a=ImageDraw.Draw(img)#从现有'test.jpg'图片来创建一个绘图对象a.line(((0,0),(508,493)),fill=(255,0,0))a.line(((0,493),(508,0)),fill=(0,255,0,0))a.arc((10,10,100,100),0,360,fill=255)font1=ImageFont.truetype("C:\Windows\Fonts\simfang.ttf",36)#更

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论