PythonWare公司提供了免費的Python圖像處理工具包PIL(Python Image Library),該軟件包提供了基本的圖像處理功能,如:
改變圖像大小,旋轉圖像,圖像格式轉換,色場空間轉換,圖像增強,直方圖處理,插值和濾波等等。雖然在這個軟件包上要實現類似MATLAB中的復雜的圖像處理算法並不太適合,但是Python的快速開發能力以及面向對象等等諸多特點使得它非常適合用來進行原型開發。
在PIL中,任何壹副圖像都是用壹個Image對象表示,而這個類由和它同名的模塊導出,因此,最簡單的形式是這樣的:
import Image img = Image.open(“dip.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上獲得。
Image模塊:
Image模塊是PIL最基本的模塊,其中導出了Image類,壹個Image類實例對象就對應了壹副圖像。同時,Image模塊還提供了很多有用的函數。
(1)打開壹文件:
import Image img = Image.open(“dip.jpg”)
這將返回壹個Image類實例對象,後面的所有的操作都是在img上完成的。
(2)調整文件大小:
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指定采用雙線性法對像素點插值。
在批處理或者簡單的Python圖像處理任務中,采用Python和PIL(Python Image Library)的組合來完成圖像處理任務是壹個很不錯的選擇。設想有壹個需要對某個文件夾下的所有圖像將對比度提高2倍的任務。用Python來做將是十分簡單的。當然,我也不得不承認Python在圖像處理方面的功能還比較弱,顯然還不適合用來進行濾波、特征提取等等壹些更為復雜的應用。我個人的觀點是,當妳要實現這些“高級”的算法的時候,好吧,把它交給MATLAB去完成。但是,如果妳面對的只是壹個通常的不要求很復雜算法的圖像處理任務,那麽,Python圖像處理應該才是妳的最佳搭檔。