十個Python圖像處理工具,不可不知!

這些Python庫提供了一種簡單直觀的方法來轉換圖像並理解底層數據。前端


今天的世界充滿了數據,圖像是這些數據的重要組成部分。可是,在使用它們以前,必須對這些數字圖像進行處理 - 分析和操做,以提升其質量或提取一些可使用的信息。算法


常見的圖像處理任務包括顯示; 基本操做如裁剪,翻轉,旋轉等;;圖像分割,分類和特徵提取;圖像恢復;圖像識別。Python是這些圖像處理任務的絕佳選擇,由於它做爲一種科學編程語言日益普及,而且在其生態系統中免費提供許多最早進的圖像處理工具。編程


本文着眼於10個最經常使用的Python庫,用於圖像處理任務。這些庫提供了一種簡單直觀的方法來轉換圖像並理解底層數據。數組


1. scikit-imageapp


scikit-image是一個與NumPy數組一塊兒使用的開源Python包。它實現了用於研究,教育和行業應用的算法和實用程序。它是一個至關簡單直接的庫,即便對那些不熟悉Python生態系統的人也是如此。代碼質量高,通過同行評審,由一個活躍的志願者社區編寫。框架


資源機器學習

scikit-image文檔豐富,有不少示例和實際使用方法。編程語言


用法ide

該包經過skimage導入,大多數功能能夠在子模塊中找到。函數


圖像過濾:


使用match_template函數進行模板匹配:


你能夠在gallery中找到更多的例子。


2. NumPy


NumPy是Python編程中的核心庫之一,併爲數組提供支持。圖像本質上是包含數據點像素的標準NumPy數組。所以,經過使用基本的NumPy操做(如slicing,masking和fancy indexing),您能夠修改圖像的像素值。可使用 skimage加載圖像並使用 Matplotlib顯示。

資源

NumPy的官方文檔頁面提供了完整的資源和文檔列表。

用法

使用Numpy來mask圖片:


3. SciPy


SciPy是Python的另外一個核心科學模塊(如NumPy),可用於基本的圖像操做和處理任務。特別是,子模塊 scipy.ndimage(在SciPy v1.1.0中)提供了在n維NumPy數組上運行的函數。該軟件包目前包括線性和非線性濾波,二進制形態,B樣條插值和對象測量等功能。


資源

有關scipy.ndimage包所提供的完整功能列表,請參閱文檔。

用法

使用SciPy經過高斯濾波器進行模糊

4. PIL/Pillow

PIL(Python Imaging Library)是一個免費的Python編程語言庫,它增長了對打開,操做和保存許多不一樣圖像格式的支持。然而,它的發展停滯不前,其最後一版發佈於2009年。幸運的是,Pillow是一個積極開發的PIL分支,它更易於安裝,可在全部主流操做系統上運行,並支持Python 3。該庫包含基本圖像處理功能,包括點操做,使用一組內置卷積內核進行過濾以及顏色空間轉換。


資源

文檔包含安裝說明以及涵蓋庫的每一個模塊的示例。


用法

使用ImageFilter加強Pillow中的圖像:

5. OpenCV-Python

OpenCV(Open Source Computer Vision Library)是計算機視覺應用中使用最普遍的庫之一。OpenCV-Python是OpenCV的Python API。由於後臺由C / C ++編寫的代碼組成,OpenCV-Python速度很快快,但它也很容易編碼和部署(因爲前端的Python包裝器)。這使其成爲執行計算密集型計算機視覺程序的絕佳選擇。


資源

經過OpenCV2-Python-Guide能夠很容易上手OpenCV-Python

用法

使用OpenCV-Python中的 Image Blending using Pyramids建立一個「Orapple」:

6. SimpleCV

SimpleCV是另外一個用於構建計算機視覺應用程序的開源框架。它提供訪問幾個高性能計算機視覺庫,如OpenCV,的接口,但無需瞭解位深度,文件格式,色彩空間等。它的學習曲線遠小於OpenCV,而且(如其標語所示),「它令計算機視覺變得簡單。」支持SimpleCV的一些觀點是:


即便是初學者也能夠編寫簡單的機器視覺測試

攝像機,視頻文件,圖像和視頻流均可以互操做

資源

很容易按照官方文檔的指導進行操做,並有大量的示例和用例可供遵循。

用法

7. Mahotas


Mahotas是另外一個用於Python的計算機視覺和圖像處理庫。它包含傳統的圖像處理功能,如過濾和形態操做,以及用於特徵計算的更現代的計算機視覺功能,包括興趣點檢測和局部描述符。使用Python編寫接口,適用於快速開發,但算法是用C ++實現的,而且針對速度進行了優化。Mahotas庫運行快速,代碼簡約,依賴性小。閱讀其官方文章以得到更多瞭解。


資源

文檔包含安裝說明,示例,甚至一些教程幫助您輕鬆開始使用Mahotas。

用法

Mahotas庫依靠簡單的代碼來完成工做。例如,使用最少許的代碼Finding Wally問題就能夠很好地解決。

解決Finding Wally問題:

8. SimpleITK

ITK(Insight Segmentation and Registration Toolkit)是一個「開源,跨平臺系統,爲開發人員提供了一套用於圖像分析的普遍軟件工具。SimpleITK是一個基於ITK構建的簡化層,旨在促進其在快速原型設計,交易以及解釋語言方面的應用。」它也是一個圖像分析工具包,具備大量組件,支持通常過濾操做,圖像分割和配準。SimpleITK是用C ++編寫的,但它可用包括Python在內的大量編程語言進行操做。

資源

有大量的Jupyter Notebook說明了SimpleITK在教育和研究活動中的應用。Notebooks使用Python和R編程語言演示如何使用SimpleITK進行交互式圖像分析。

用法

使用SimpleITK和Python建立可視化的嚴格CT / MR配準過程:

9. pgmagick

pgmagick是基於Python的GraphicsMagick庫的包裝器。GraphicsMagick圖像處理系統,有時也被稱爲圖像處理的瑞士軍刀。其強大而高效的工具和庫集合支持在超過88種主要格式(包括DPX,GIF,JPEG,JPEG-2000,PNG,PDF,PNM和TIFF)上讀取,寫入和操做圖像。

資源

pgmagick的GitHub respository有安裝說明和要求。還有一個詳細的用戶指南。

用法

圖像縮放:

邊緣提取:

10. Pycairo


Pycairo是Cairo圖形庫的一組Python綁定。Cairo是一個用於繪製矢量圖形的2D圖形庫。矢量圖形頗有趣,由於它們在調整大小或變換時不會失去清晰度。Pycairo能夠從Python調用Cairo命令。

資源

Pycairo GitHub respository是一個很好的資源,包含有關安裝和使用的詳細說明。還有一個入門指南,有一個關於Pycairo的簡短教程。

用法

用Pycairo繪製線條,基本形狀和徑向漸變:

結論

這些是Python中一些有用且免費提供的圖像處理庫。有些是衆所周知的,有些可能對你來講是新的。嘗試一下它們以瞭解更多關於它們的信息!




關注公衆帳號

飛馬會





往期福利
關注飛馬會公衆號,回覆對應關鍵詞打包下載學習資料;回覆「入羣」,加入飛馬網AI、大數據、項目經理學習羣,和優秀的人一塊兒成長!
相關文章
相關標籤/搜索