虽然图像处理的最佳工具是MATLAB的图像处理工具箱,但是在进行一些“简单的”图像处理任务或者大批量的简单图像处理任务的时候,Python图像处理的方法更有优势。
1.引言:
提到图像处理,人们通常想到的工具是MATLAB。诚然,MATLAB提供了一个强大的图像处理工具箱。但是,对于简单的图像处理任务而言,采用一
种高级的语言将起到事半功倍的效果。Python无疑就是实现这一功能的理想选择。Python的面向对象、弱数据类型等等特性都使得用它来进行简单的图
像处理的时候非常的简洁方便。
2.简介:
PythonWare公司提供了免费的Python图像处理工具包PIL(Python Image
Library),该软件包提供了基本的图像处理功能,如:改变图像大小,旋转图像,图像格式转换,色场空间转换,图像增强,直方图处理,插值和滤波等
等。虽然在这个软件包上要实现类似MATLAB中的复杂的图像处理算法并不太适合,但是Python的快速开发能力以及面向对象等等诸多特点使得它非常适
合用来进行原型开发。
在PIL中,任何一副图像都是用一个Image对象表示,而这个类由和它同名的模块导出,因此,要加载一副图像,最简单的形式是这样的:
from PIL import Image
img = Image.open("img.jpg")
注意:第一行的Image是模块名;第二行的img是一个Image对象;
Image类是在Image模块中定义的。关于Image模块和Image类,切记不要混淆了。现在,我们就可以对img进行各种操作了,所有对img的
操作最终都会反映到到dip.img图像上。
PIL提供了丰富的功能模块:Image,ImageDraw,ImageEnhance,ImageFile等等。
最常用到的模块是
Image,ImageDraw,ImageEnhance这三个模块。下
面我对此分别做一介绍。关于其它模块的使用请参见说明文档.有关PIL软件包和
相关的说明文档可在PythonWare的站点www.Pythonware.com上获得。
download: http://www.pythonware.com/products/pil/index.htm
example: http://www.pythonware.com/library/pil/handbook/image.htm
3.Image模块:
Image模块是PIL最基本的模块,其中导出了Image类,一个Image类实例对象就对应了一副图像。同时,Image模块还提供了很多有用的函数。
(1)打开一副图像文件:
from PIL import Image
img = Image.open("img.jpg")
这将返回一个Image类实例对象,后面的所有的操作都是在img上完成的。
(2)调整图像大小:
from PIL import Image
img = Image.open("img.jpg")
new_img = img.resize((128,128),Image.BILINEAR)
new_img.save("new_img.jpg")
原来的图像大小是256x256,现在,保存的new_img.jpg的大小是128x128。
就是这么简单,需要说明的是Image.BILINEAR指定采用双线性法对像素点插值。
(3)旋转图像:
现在我们把刚才调整过大小的图像旋转45度:
from PIL import Image
img = Image.open("img.jpg")
new_img = img.resize((128,128),Image.BILINEAR)
rot_img = new_img.rotate(45)
rot_img.save("rot_img.jpg")
总结:
在批处理或者简单的Python图像处理任务中,采用Python和PIL(Python Image
Library)的组合来完成图像处理任务是一个很不错的选择。设想有一个需要对某个文件夹下的所有图像将对比度提高2倍的任务。用Python来做将是
十分简单的。当然,我也不得不承认Python在图像处理方面的功能还比较弱,显然还不适合用来进行滤波、特征提取等等一些更为复杂的应用。我个人的观点
是,当你要实现这些“高级”的算法的时候,好吧,把它交给MATLAB去完成。但是,如果你面对的只是一个通常的不要求很复杂算法的图像处理任务,那
么,Python应该才是你的最佳搭档。
分享到:
相关推荐
Python系列课程-小白变大神-从零学Python-案例讲解-Demo实例 Python是一种跨平台的计算机程序设计语言。 python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本...
Python高级编程-Python多进程编程基础及实例讲解 共14页.pdf
Python自然语言处理-BERT模型实战课程旨在帮助同学们快速掌握当下NLP领域最核心的算法模型BERT的原理构造与应用实例。通俗讲解BERT模型中所涉及的核心知识点(Transformer,self-attention等),基于google开源BERT...
Python3-廖xuefeng 图书所有例子合集,未按照书中进行排序 目前学习到第九天,缓慢学习中 源码中的案例仅供参考
│ │ ├10 python s14 day2 购物车程序练习实例.avi │ │ ├11 python s14 day2 字符串常用操作.avi │ │ ├12 python s14 day2 字典的使用.avi │ │ ├13 python s14 day2 三级菜单实例.avi │ │ ├14 python ...
第六周-第11章节-Python3.5-多态实例讲解.avi
第六周-第10章节-Python3.5-继承实例讲解.avi
在读图片时,会用到这么的一段代码: image_vector_len = np.prod(image_size)#总元素大小,3*55*47 img = Image.open(path) arr_img = np.asarray(img, dtype='float64') arr_img = arr_img.transpose(2,0,1)....
Python自然语言处理-BERT模型实战课程旨在帮助同学们快速掌握当下NLP领域最核心的算法模型BERT的原理构造与应用实例。通俗讲解BERT模型中所涉及的核心知识点(Transformer,self-attention等),基于google开源BERT...
本书提供逐步讲解、清晰实例,以及将PC连接到各种设备的实践技巧。 目录 第1章 仪器学概论 第2章 基本电子学 第3章 Python编程语言 第4章 C语言编程 第5章 Python扩展 第6章 硬件:工具与耗材 第7章 物理...
今天小编就为大家分享一篇Python 网络爬虫--关于简单的模拟登录实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
python应用实例讲解.pdf
python 类详细讲解 Python是一种面向对象的编程语言,因此类是Python中最重要的概念之一。类是一种用户自定义的数据类型,它可以包含数据和方法。在Python中,类是通过关键字class来定义的。 类的定义通常包括类名、...
新知讲解 Python语言中的语句就是Python命令。 一、Python命令 单击【开始】-【Python文件夹】-【IDLE】, 进入Python Shell。 第1单元第一课-用Python编程(ppt)全文共28页,当前为第4页。 新知讲解 在
这篇文章是这篇文章这篇文章是一个比较详细的Python,主要内容包括: 1. 介绍了爬虫的概念和作用 ...总的来说,这是一篇对Python爬虫入门者很有参考价值的教程,通过实例代码和细致的解释,能够帮助读者快速上手爬虫开发。
为了方便同学们能将项目应用到自己的数据与任务中,实例演示如何针对自己的数据集制作标签与代码调整方法,全程实战操作,通俗讲解其中复杂的网络架构。 章节1 物体检测框架-MaskRcnn项目介绍与配置 章节2 MaskRcnn...
本书从Python的安装开始,详细讲解了Python从简单程序延伸到Python网络爬虫的全过程。本书从实战出发,根据不同的需求选取不同的爬虫,有针对性地讲解了几种Python网络爬虫。本书共8章,涵盖的内容有Python语言的...
对Python中列表和数组的赋值 中 ,浅拷贝和深拷贝的实例讲解 浅 引⽤: 列表赋值: 1234567>>> a = [1, 2, 3] >>> b = a >>> print b [1, 2, 3] >>> a[0] = 0 >>> print b [0, 2, 3] 解释:[1, 2, 3]被视作⼀个对象...
python网络爬虫实战 pdf是一本由胡松涛所著的python教程工具书,作者以大量实例为基础详细介绍了网络爬虫的编写全过程,非常适合Python网络爬虫初学者以及相关专业师生使用! python网络爬虫实战电子书介绍 ...
2022年最新版超详细Python算法案例讲解100例