`
天梯梦
  • 浏览: 13731681 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

Python实例讲解 -- 图片处理

阅读更多

虽然图像处理的最佳工具是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-案例讲解-Demo实例 Python是一种跨平台的计算机程序设计语言。 python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本...

    byte-of-python-chinese-edition

    它以实用的例子和清晰的讲解获得好评,许多读者在学习后都表达了对作者的感谢之情,并推荐给其他同样对Python感兴趣的读者。《byte-of-python-chinese-edition》无疑是Python初学者值得收藏的优质教程。

    简明python教程-中文版( byte-of-python-chinese-edition.pdf )

    - **标准库**:详细讲解Python标准库的使用方法,如文件操作、网络编程等实用工具。 - **解决问题的方法**:通过具体案例教授如何运用Python解决实际问题。 - **面向对象编程**:深入理解类和对象的概念,掌握面向...

    python-3.10.0-docs-pdf-a4.rar

    - Python API:讲解如何从 C 代码调用 Python 函数,以及如何编写 C API 接口。 6. **附录**: - 标准类型表:列出了所有内置的数据类型和它们的属性。 - 模块索引:提供了所有标准库模块的快速参考。 - 语言...

    Python 3 Object-oriented Programming - Second Edition(附源码),2015

    8. 异常处理:Python的异常处理机制通过`try/except/finally`语句来捕获和处理运行时错误,确保程序的健壮性。 9. 模块与包:Python的模块和包是组织代码的有效方式,模块是一组相关的函数和类,包则是模块的容器,...

    byte-of-python-chinese-edition.pdf

    总的来说,《简明Python教程》是一本全面而易于理解的书籍,通过细致入微的讲解和实例演示,为Python初学者提供了一个完美的起点。它不仅教会了读者如何编写Python代码,还传递了一种学习编程和解决问题的思维方式。...

    dive_into_python_zh-cn-5.4b

    5. **文件与I/O操作**:Python提供了强大的文件操作能力,包括读写文件、处理文件对象、序列化等,这些内容在书中都有详尽的实例解析。 6. **网络编程**:Python可以用于网络编程,如HTTP请求、套接字编程等,书中...

    python实例61-Python制作图形用户界面(GUI)让操作可视化.rar

    本实例将重点讲解使用Tkinter库创建一个简单的GUI应用。 Tkinter是Python的标准GUI库,它基于Tcl/Tk库。这个库易于学习,适合初学者快速构建GUI应用。首先,我们需要导入Tkinter库,并创建一个主窗口。在Python中,...

    Python-simple-examples.rar_Python 例子

    通过这些实例,学习者可以逐步掌握Python的基础,包括语法、数据结构、控制流、函数、文件操作、异常处理和面向对象编程等核心概念。对于已经有一定Python基础的人来说,这些例子可能过于简单,但对于初学者来说,...

    byte-of-python-chinese-edition python简明教程的中文版

    书中通过简洁易懂的语言介绍了Python的基本概念和语法,并通过大量的实例帮助读者理解并掌握Python编程技巧。 #### 2. 内容结构 - **目录** - 介绍 - 献词 - 前言 - 译者前言 - 关于Python - 安装 - 第一步 ...

    《Python Geospatial Development - Third Edition》随书代码sourece codes

    这本书旨在帮助读者掌握利用Python处理地理信息系统的技能,包括数据获取、地图制作、空间分析以及与其他软件的集成。随书源码包含了多个章节的实例代码,这些代码涵盖了从基础到高级的地理空间开发技术。 1. **...

    Python-YUAN-MA-POU-XI.rar_python

    它可能会按照章节结构详细讲解Python的各个主题,每个主题下可能包括实例、代码解析、疑难解答等内容,使得学习过程更加直观和互动。 总的来说,这个“Python-YUAN-MA-POU-XI.rar”压缩包是一个深度学习Python的...

    Core Python Programming----Source Code

    12. **自动化和脚本编写**:Python常用于编写自动化脚本,如系统管理、文件管理、网络监控等,书中的例子将展示如何利用Python的便利性来提高工作效率。 13. **单元测试和调试**:Python的unittest模块提供了一套...

    python实例43-批量发送不同内容的邮件给不同的收件人.rar

    本实例"python实例43-批量发送不同内容的邮件给不同的收件人"着重讲解如何利用Python实现这一功能。这个例子可能涉及到多个核心知识点,包括SMTP(Simple Mail Transfer Protocol)协议、smtplib库以及email库的使用...

    Python-Library-Learning_python学习_

    总结来说,"Python-Library-Learning_python学习_"这个压缩包很可能是为了帮助学习者掌握Python库的使用,涵盖了从基础的Python标准库到复杂的第三方库的实例和讲解。通过深入学习和实践,你将能够熟练运用Python库...

    Python3教程-廖雪峰带

    这本书以简洁明了的语言和丰富的实例,为读者提供了全面而深入的Python3学习路径,旨在帮助新手快速掌握这门强大的编程语言。 1. **Python3基础**:教程从Python3的基础语法入手,包括变量、数据类型(如整型、浮点...

    Pythonpython3廖大佬讲解-python经典案例

    "Pythonpython3廖大佬讲解-python经典案例"这个标题暗示了这是一个关于Python 3编程的学习资源,由知名Python讲师廖雪峰(通常在社区中被称为“廖大佬”)提供。这个资源可能包含了他讲解的一些Python经典案例,尽管...

Global site tag (gtag.js) - Google Analytics