怎樣使用Python圖像處理?
Python圖像處理是一種簡單易學,功能強大的解釋型編程語言,它有簡潔明了的語法,高效率的高層數據結構,能夠簡單而有效地實現面向對象編程,下文進行對Python圖像處理進行說明。
當然,首先要感謝“戀花蝶”,是他的文章“用Python圖像處理 ” 幫我堅定了用Python和PIL解決問題的想法,對于PIL的一些介紹和基本操作,可以看看這篇文章。我這里主要是介紹點我在使用過程中的經驗。
PIL可以對圖像的顏色進行轉換,并支持諸如24位彩色、8位灰度圖和二值圖等模式,簡單的轉換可以通過Image.convert(mode)函數完 成,其中mode表示輸出的顏色模式。例如''L''表示灰度,''1''表示二值圖模式等。
但是利用convert函數將灰度圖轉換為二值圖時,是采用固定的閾 值127來實現的,即灰度高于127的像素值為1,而灰度低于127的像素值為0。為了能夠通過自定義的閾值實現灰度圖到二值圖的轉換,就要用到 Image.point函數。#t#
Image.point函數有多種形式,這里只討論Image.point(table, mode),利用該函數可以通過查表的方式實現像素顏色的模式轉換。其中table為顏色轉換過程中的映射表,每個顏色通道應當有256個元素,而 mode表示所輸出的顏色模式,同樣的,''L''表示灰度,''1''表示二值圖模式。
可見,轉換過程的關鍵在于設計映射表,如果只是需要一個簡單的箝位值,可以將table中高于或低于箝位值的元素分別設為1與0。當然,由于這里的table并沒有什么特殊要求,所以可以通過對元素的特殊設定實現(0, 255)范圍內,任意需要的一對一映射關系。
示例代碼如下:
- import Image
- # load a color image
- im = Image.open(''fun.jpg'')
- # convert to grey level image
- Lim = im.convert(''L'')
- Lim.save(''fun_Level.jpg'')
- # setup a converting table with constant threshold
- threshold = 80
- table = []
- for i in range(256):
- if i < threshold:
- table.append(0)
- else:
- table.append(1)
- # convert to binary image by the table
- bim = Lim.point(table, ''1'')
- bim.save(''fun_binary.jpg'')
IT部分通常要完成的任務相當繁重但支撐這些工作的資源卻很少,這已經成為公開的秘密。任何承諾提高編碼效率、降低軟件總成本的IT解決方案都應該進行 周到的考慮。Python圖像處理所具有的一個顯著優勢就是可以在企業的軟件創建和維護階段節約大量資金,而這兩個階段的軟件成本占到了軟件整個生命周期中總成本 的50%到95%。
Python清晰可讀的語法使得軟件代碼具有異乎尋常的易讀性,甚至對那些不是最初接觸和開發原始項目的程序員都 能具有這樣的強烈感覺。雖然某些程序員反對在Python代碼中大量使用空格。
不過,幾乎人人都承認Python圖像處理的可讀性遠勝于C或者Java,后兩 者都采用了專門的字符標記代碼塊結構、循環、函數以及其他編程結構的開始和結束。提倡Python的人還宣稱,采用這些字符可能會產生顯著的編程風格差 異,使得那些負責維護代碼的人遭遇代碼可讀性方面的困難。