【Python学习】 - skimage包
?一提到數字圖像處理編程,可能大多數人就會想到matlab,但matlab也有自身的缺點:
1、不開源,價格貴? ?2、軟件容量大。一般3G以上,高版本甚至達5G以上。? ?3、只能做研究,不易轉化成軟件。
因此,我們這里使用python這個腳本語言來進行數字圖像處理。
要使用python進行各種開發和科學計算,還需要安裝對應的包。這和matlab非常相似,只是matlab里面叫工具箱(toolbox),而python里面叫庫或包。基于python腳本語言開發的數字圖片處理包,其實很多,比如PIL,Pillow, opencv, scikit-image等。
對比這些包,PIL和Pillow只提供最基礎的數字圖像處理,功能有限;opencv實際上是一個c++庫,只是提供了python接口,更新速度非常慢。到現在python都發展到了3.5版本,而opencv只支持到python 2.7版本;scikit-image是基于scipy的一款圖像處理包,它將圖片作為numpy數組進行處理,正好與matlab一樣,因此,我們最終選擇scikit-image進行數字圖像處理。
和常見的PIL.Image的區別:Image讀出來的是PIL的類型,而skimage.io讀出來的數據是numpy格式的,便于處理。
官網:https://scikit-image.org/
一、需要的安裝包
因為scikit-image是基于scipy進行運算的,因此安裝numpy和scipy是肯定的。要進行圖片的顯示,還需要安裝matplotlib包,綜合起來,需要的包有:
Python >= 2.6 Numpy >= 1.6.1 Cython >= 0.21 Six >=1.4 SciPy >=0.9 Matplotlib >= 1.1.0 NetworkX >= 1.8 Pillow >= 1.7.8 dask[array] >= 0.5.0雖然繁瑣,但是Anaconda這個集成安裝環境就囊括上述所有包了。
二、skimage包的子模塊
skimage包的全稱是scikit-image?SciKit (toolkit for?SciPy) ,它對scipy.ndimage進行了擴展,提供了更多的圖片處理功能。它是由python語言編寫的,由scipy 社區開發和維護。skimage包由許多的子模塊組成,各個子模塊提供不同的功能。主要子模塊列表如下:
| 子模塊名稱 | 主要實現功能 |
| io | 讀取、保存和顯示圖片或視頻 |
| data | 提供一些測試圖片和樣本數據 |
| color | 顏色空間變換 |
| filters | 圖像增強、邊緣檢測、排序濾波器、自動閾值等 |
| draw | 操作于numpy數組上的基本圖形繪制,包括線條、矩形、圓和文本等 |
| transform | 幾何變換或其它變換,如旋轉、拉伸和拉東變換等 |
| morphology | 形態學操作,如開閉運算、骨架提取等 |
| exposure | 圖片強度調整,如亮度調整、直方圖均衡等 |
| feature | 特征檢測與提取等 |
| measure | 圖像屬性的測量,如相似性或等高線等 |
| segmentation | 圖像分割 |
| restoration | 圖像恢復 |
| util | 通用函數 |
用到一些圖片處理的操作函數時,需要導入對應的子模塊,如果需要導入多個子模塊,則用逗號隔開,如:
from skimage import io,data,color?
三、簡單實例
from skimage import io, data img = data.chelsea() io.imshow(img) print(type(img)) #顯示類型 print(img.shape) #顯示尺寸?
?
?
?
?
?
?
參考資料:
https://blog.csdn.net/qq_41185868/article/details/80330262
https://www.cnblogs.com/denny402/p/5121501.html? ?(此網址包含了skimage完整教程)
https://www.cnblogs.com/wangxiaocvpr/p/11656603.html(此博客參考自網址2)
?
?
總結
以上是生活随笔為你收集整理的【Python学习】 - skimage包的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Python学习日志】 - Numpy
- 下一篇: 美国520亿美元补贴难产 消息称Inte