資源描述:
《用python來完成簡(jiǎn)單圖像處理》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、用Python來完成簡(jiǎn)單圖像處理摘要:本文簡(jiǎn)單介紹了用Python來完成簡(jiǎn)單圖像處理任務(wù)的方法。雖然圖像處理的最佳工具是MATLAB的圖像處理工具箱,但是在進(jìn)行一些“簡(jiǎn)單的”圖像處理任務(wù)或者大批量的簡(jiǎn)單圖像處理任務(wù)的時(shí)候,Python更有優(yōu)勢(shì)。關(guān)鍵詞:圖像處理圖像增強(qiáng)PythonAbstract:Thiscontextintroducessomemethodsusedtofullfillsimplyimageprocessingtaskinpythonprogramminglanguage.Althoughth
2、ebestimageprocessingtoolkitistheImageProcessingToolboxofMATLAB,pythonissuperiortothistoolkitwhenyourstaffissomewhat“simple”orsimplebutboringandexhaustingimageprocessingcommitment.Keywords:ImageProcessingImageEnhancementPython1.引言:提到圖像處理,人們通常想到的工具是MATLAB。誠(chéng)然,M
3、ATLAB提供了一個(gè)強(qiáng)大的圖像處理工具箱。但是,對(duì)于簡(jiǎn)單的圖像處理任務(wù)而言,采用一種高級(jí)的語言將起到事半功倍的效果。Python無疑就是實(shí)現(xiàn)這一功能的理想選擇。Python的面向?qū)ο?、弱?shù)據(jù)類型等等特性都使得用它來進(jìn)行簡(jiǎn)單的圖像處理的時(shí)候非常的簡(jiǎn)潔方便。2.簡(jiǎn)介:PythonWare公司提供了免費(fèi)的圖像處理工具包PIL(PythonImageLibrary),該軟件包提供了基本的圖像處理功能,如:改變圖像大小,旋轉(zhuǎn)圖像,圖像格式轉(zhuǎn)換,色場(chǎng)空間轉(zhuǎn)換,圖像增強(qiáng),直方圖處理,插值和濾波等等。雖然在這個(gè)軟件包上要實(shí)現(xiàn)類
4、似MATLAB中的復(fù)雜的圖像處理算法并不太適合,但是Python的快速開發(fā)能力以及面向?qū)ο蟮鹊戎T多特點(diǎn)使得它非常適合用來進(jìn)行原型開發(fā)。在PIL中,任何一副圖像都是用一個(gè)Image對(duì)象表示,而這個(gè)類由和它同名的模塊導(dǎo)出,因此,要加載一副圖像,最簡(jiǎn)單的形式是這樣的:importImageimg=Image.open(“dip.jpg”)注意:第一行的Image是模塊名;第二行的img是一個(gè)Image對(duì)象;Image類是在Image模塊中定義的。關(guān)于Image模塊和Image類,切記不要混淆了?,F(xiàn)在,我們就可以對(duì)im
5、g進(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上獲得。3.Image模塊:Image模塊是PIL最基本的模塊,其中導(dǎo)出了Image類,一個(gè)
6、Image類實(shí)例對(duì)象就對(duì)應(yīng)了一副圖像。同時(shí),Image模塊還提供了很多有用的函數(shù)。(1)打開一副圖像文件:importImageimg=Image.open(“dip.jpg”)這將返回一個(gè)Image類實(shí)例對(duì)象,后面的所有的操作都是在img上完成的。在這里,我們讀入的圖像是:(2)調(diào)整圖像大小:importImageimg=Image.open("img.jpg")new_img=img.resize((128,128),Image.BILINEAR)new_img.save("new_img.jpg")原來的
7、圖像大小是256x256,現(xiàn)在,保存的new_img.jpg的大小是128x128:就是這么簡(jiǎn)單,需要說明的是Image.BILINEAR指定采用雙線性法對(duì)像素點(diǎn)插值。(3)旋轉(zhuǎn)圖像:現(xiàn)在我們把剛才調(diào)整過大小的圖像旋轉(zhuǎn)45度:importImageimg=Image.open("img.jpg")new_img=img.resize((128,128),Image.BILINEAR)rot_img=new_img.rotate(45)rot_img.save("rot_img.jpg")于是我們保存到rot_i
8、mg.jpg的圖像看起來像下面這樣:(4)格式轉(zhuǎn)換:假設(shè)我們要把上面生成的rot_img.jpg轉(zhuǎn)換成bmp圖像,要做到這一點(diǎn)這太簡(jiǎn)單了:只需要在上面的代碼后面添加下面這樣一行即可:rot_img.save("con_img.bmp")如果不指定保存格式,PIL將自動(dòng)根據(jù)文件名后綴完成格式之間的轉(zhuǎn)換,是不是很簡(jiǎn)單呢?(5)直方圖統(tǒng)計(jì):Image類實(shí)例的histogram()方法能夠?qū)χ?/p>