Python圖像處理的好處所在
Python圖像處理這一計(jì)算機(jī)語言被廣泛的應(yīng)用,同時(shí)這篇文章也被廣泛的應(yīng)用,下面的文章就是我們對(duì)Python圖像處理這一語言的好處做一相關(guān)的詳細(xì)介紹,望你會(huì)有所收獲,以下是這篇文章的介紹。
雖然圖像處理的最佳工具是MATLAB的圖像處理工具箱,但是在進(jìn)行一些“簡(jiǎn)單的”圖像處理任務(wù)或者大批量的簡(jiǎn)單圖像處理任務(wù)的時(shí)候,Python圖像處理的方法更有優(yōu)勢(shì)。
提到圖像處理,人們通常想到的工具是MATLAB。誠然,MATLAB提供了一個(gè)強(qiáng)大的圖像處理工具箱。但是,對(duì)于簡(jiǎn)單的圖像處理任務(wù)而言,采用一種Python圖像處理高級(jí)的語言將起到事半功倍的效果。Python無疑就是實(shí)現(xiàn)這一功能的理想選擇。Python的面向?qū)ο蟆⑷鯏?shù)據(jù)類型等等特性都使得用它來進(jìn)行簡(jiǎn)單的圖像處理的時(shí)候非常的簡(jiǎn)潔方便。#t#
簡(jiǎn)介:
PythonWare公司提供了免費(fèi)的Python圖像處理工具包PIL(Python Image Library),該軟件包提供了基本的圖像處理功能,如:
改變圖像大小,旋轉(zhuǎn)圖像,圖像格式轉(zhuǎn)換,色場(chǎng)空間轉(zhuǎn)換,圖像增強(qiáng),直方圖處理,插值和濾波等等。雖然在這個(gè)軟件包上要實(shí)現(xiàn)類似MATLAB中的復(fù)雜的圖像處理算法并不太適合,但是Python的快速開發(fā)能力以及面向?qū)ο蟮鹊戎T多特點(diǎn)使得它非常適合用來進(jìn)行原型開發(fā)。
在PIL中,任何一副圖像都是用一個(gè)Image對(duì)象表示,而這個(gè)類由和它同名的模塊導(dǎo)出,因此,最簡(jiǎn)單的形式是這樣的:
import Image img = Image.open(“dip.jpg”) 注意:第一行的Image是模塊名;第二行的img是一個(gè)Image對(duì)象; Image類是在Image模塊中定義的。關(guān)于Image模塊和Image類,切記不要混淆了?,F(xiàn)在,我們就可以對(duì)img進(jìn)行各種操作了,所有對(duì)img的操作最終都會(huì)反映到到dip.img圖像上。
PIL提供了豐富的功能模塊:Image,ImageDraw,ImageEnhance,ImageFile等等。最常用到的模塊是Image,ImageDraw,ImageEnhance這三個(gè)模塊。下面我對(duì)此分別做一介紹。關(guān)于其它模塊的使用請(qǐng)參見說明文檔.有關(guān)PIL軟件包和相關(guān)的說明文檔可在PythonWare的站點(diǎn)www.Pythonware.com上獲得。
Image模塊:
Image模塊是PIL最基本的模塊,其中導(dǎo)出了Image類,一個(gè)Image類實(shí)例對(duì)象就對(duì)應(yīng)了一副圖像。同時(shí),Image模塊還提供了很多有用的函數(shù)。
(1)打開一文件:
- import Image img = Image.open(“dip.jpg”)
這將返回一個(gè)Image類實(shí)例對(duì)象,后面的所有的操作都是在img上完成的。
(2)調(diào)整文件大小:
- import Image img = Image.open("img.jpg") new_img = img.resize
((128,128),Image.BILINEAR) new_img.save("new_img.jpg")
原來的圖像大小是256x256,現(xiàn)在,保存的new_img.jpg的大小是128x128。
就是這么簡(jiǎn)單,需要說明的是Image.BILINEAR指定采用雙線性法對(duì)像素點(diǎn)插值。
在批處理或者簡(jiǎn)單的Python圖像處理任務(wù)中,采用Python和PIL(Python Image Library)的組合來完成圖像處理任務(wù)是一個(gè)很不錯(cuò)的選擇。設(shè)想有一個(gè)需要對(duì)某個(gè)文件夾下的所有圖像將對(duì)比度提高2倍的任務(wù)。用Python來做將是十分簡(jiǎn)單的。當(dāng)然,我也不得不承認(rèn)Python在圖像處理方面的功能還比較弱,顯然還不適合用來進(jìn)行濾波、特征提取等等一些更為復(fù)雜的應(yīng)用。我個(gè)人的觀點(diǎn)是,當(dāng)你要實(shí)現(xiàn)這些“高級(jí)”的算法的時(shí)候,好吧,把它交給MATLAB去完成。但是,如果你面對(duì)的只是一個(gè)通常的不要求很復(fù)雜算法的圖像處理任務(wù),那么,Python圖像處理應(yīng)該才是你的最佳搭檔。