Python基础10

上传人:jiups****uk12 文档编号:57542013 上传时间:2018-10-22 格式:PPT 页数:19 大小:106.50KB
返回 下载 相关 举报
Python基础10_第1页
第1页 / 共19页
Python基础10_第2页
第2页 / 共19页
Python基础10_第3页
第3页 / 共19页
Python基础10_第4页
第4页 / 共19页
Python基础10_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《Python基础10》由会员分享,可在线阅读,更多相关《Python基础10(19页珍藏版)》请在金锄头文库上搜索。

1、PIL python Image library,PythonWare公司提供了免费的图像处理工具包PIL(Python Image Library),该软件包提供了基本的图像处理功能,如:改变图像大小,旋转图像,图像格式转换,色场空间转换,图像增强,直方图处理,插值和滤波等 等。虽然在这个软件包上要实现类似MATLAB中的复杂的图像处理算法并不太适合,但是Python的快速开发能力以及面向对象等等诸多特点使得它非常适 合用来进行原型开发。,PIL,在PIL中,任何一副图像都是用一个Image对象表示,而这个类由和它同名的模块导出,因此,要加载一副图像,最简单的形式是这样的: import I

2、mage img = Image.open(“dip.jpg”) 注意:第一行的Image是模块名;第二行的img是一个Image对象; Image类是在Image模块中定义的。,PIL,PIL提供了丰富的功能模块:Image,ImageDraw,ImageEnhance,ImageFiler等等。最常用到的模块是 Image,ImageDraw,ImageEnhance这三个模块。,Image模块,Image模块是PIL最基本的模块,其中导出了Image类,一个Image类实例对象就对应了一副图像。同时,Image模块还提供了很多有用的函 数。 (1)打开一副图像文件: import Ima

3、ge img = Image.open(“dip.jpg”) 这将返回一个Image类实例对象,后面的所有的操作都是在img上完成的。,Image模块,(2)调整图像大小: import Image img = Image.open(“img.jpg“) new_img = img.resize(128,128),Image.BILINEAR) new_img.save(“new_img.jpg“) Image.BILINEAR指定采用双线性法对像素点插值。,Image模块,(3)旋转图像: 现在我们把刚才调整过大小的图像旋转45度: import Image img = Image.open

4、(“img.jpg“) new_img = img.resize(128,128),Image.BILINEAR) rot_img = new_img.rotate(45) rot_img.save(“rot_img.jpg“),Image模块,(4)格式转换: 假设我们要把上面生成的rot_img.jpg转换成bmp图像,要做到这一点这太简单了:只需要在上面的代码后面添加下面这样一行即可: rot_img.save(“con_img.bmp“) 如果不指定保存格式,PIL将自动根据文件名后缀完成格式之间的转换,Image模块,(5)直方图统计: Image类实例的histogram()方法能

5、够对直方图数据进行统计,并将结果做为一个列表(list)返回。比如,我们对上面的旋转后生成的 图像进行直方图统计: import Image img = Image.open(“img.jpg“) new_img = img.resize(128,128),Image.BILINEAR) rot_img = new_img.rotate(45) print rot_img.histogram(),ImageDraw模块,ImageDraw模块提供了基本的图形能力,这里的图形能力指的主要是图形的绘制能力。PIL库提供了比较丰富的图形绘制函数,可以绘制直线、弧线、矩 形、多边形、椭圆、扇形等等。I

6、mageDraw实现了一个Draw类,所有的图形绘制功能都是在Draw类实例的方法中实现的。,ImageDraw模块,import Image,ImageDraw img = Image.open(“img.jpg“) draw = ImageDraw.Draw(img) 首先要导入ImageDraw模块。然后,因为绘图操作是在图像上进行的,因此实例化Draw类的时候要把Image对象img通过参数传递给 Draw类的构造函数。现在,你就可以调用draw的各种方法在img上绘制图形了。,ImageDraw模块,(1)绘制直线: import Image,ImageDraw img = Imag

7、e.open(“img.jpg“) draw = ImageDraw.Draw(img) width,height = img.size draw.line(0,0),(width-1,height-1),fill=255) draw.line(0,height-1),(width-1,0),fill=255) img.save(“cross_line.jpg“),ImageDraw模块,(2)绘制圆: import Image,ImageDraw img = Image.open(“img.jpg“) width,height = img.size draw = ImageDraw.Draw

8、(img) draw.arc(0,0,width-1,height-1),0,360,fill=255) img.save(“circle.jpg“),ImageEnhance模块,这个模块提供了一个常用的图像增强工具箱。可以用来进行色彩增强、亮度增强、对比度增强、图像尖锐化等等增强操作。所有操作都有相同形式的接口通过相 应类的enhance方法实现:色彩增强通过Color类的enhance方法实现;亮度增强通过Brightness类的enhance方法实现;对比 度增强通过Contrast类的enhance方法实现;尖锐化通过Sharpness类的enhance方法实现。所有的操作都需要向类

9、的构造函数传递 一个Image对象作为参数,这个参数定义了增强作用的对象。同时所有的操作都返回一个新的Image对象。如果传给enhance方法的参数是1.0, 则不对原图像做任何改变,直接返回原图像的一个拷贝。,ImageEnhance模块,(1)亮度增强: import Image,ImageEnhance img = Image.open(“img.jpg“) brightness = ImageEnhance.Brightness(img) bright_img = brightness.enhance(2.0) bright_img.save(“bright.jpg“),ImageE

10、nhance模块,说明: brightness = ImageEnhance.Brightness(img) 这一行把img传给Brightness类,得到一个Brightness类实例; bright_img = brightness.enhance(2.0) 这一行调用brightness实例的enhance方法,传入的参数指定将亮度增强2倍;,ImageEnhance模块,(2)图像尖锐化: import Image,ImageEnhance img = Image.open(“img.jpg“) sharpness = ImageEnhance.Sharpness(img) sharp

11、_img = sharpness.enhance(7.0) sharp_img.save(“bright.jpg“),ImageEnhance模块,(3)对比度增强: import Image,ImageEnhance img = Image.open(“img.jpg“) contrast = ImageEnhance.Contrast(img) contrast_img = contrast.enhance(2.0) contrast_img.save(“contrast.jpg“),原型开发,img=Image.open(T1.ppm)img1=img.convert(L)out_image = Image.new(img1.mode, img1.size, None) #新建图片img1=img1.filter(ImageFilter.MedianFilter)imgdata = img1.load() #取img每个点的数据,返回值为列表 imgdatax,youtdata = out_image.load() #取out_image每个点的数据,返回值为列表。对此列表赋值,即为对图像out_image 操作。,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号