10.14 10個Python圖像處理工具,非常全了

作者:Parul Pandey
編譯:ronghuaiyang

導讀

10個常用的可以進行圖像處理的Python庫的介紹,可能有些你還沒用過,可以試試看!
10個Python圖像處理工具,非常全了

介紹

我們這個世界充滿了數據,而圖像是這些數據的重要組成部分。然而,要想使用這些圖像,需要對它們進行處理。因此,圖像處理是分析和處理數字圖像的必要的過程,其主要目的是提高圖像質量或從中提取一些信息,然後加以利用。

圖像處理中常見的任務包括圖像顯示、裁剪、翻轉、旋轉等基本操作、圖像分割、分類和特徵提取、圖像恢復和圖像識別。Python成為這種圖像處理任務的合適選擇。這是因為它作為一種科學編程語言越來越受歡迎,而且在其生態系統中有許多最先進的圖像處理工具可以免費使用。

我們來看一些用於圖像處理任務的常用Python庫。

1. scikit Image

scikit-image是一個開源的Python包,可以使用 numpy 數組。它實現了用於研究、教育和工業應用的算法和實用程序。它是一個相當簡單和直接的庫,即使對於Python生態系統的新手也是如此。這些代碼是由活躍的志願者社區編寫的,具有高質量和同行評審的特性。

資源

它已經通過大量的例子和實際的用例很好地文檔化了。閱讀文檔:(http://scikit-image.org/docs/stable/user_guide.html)。

使用

包被導入為 skimage,大多數函數都在子模塊中可以找到。skimage的一些例子包括:

  • 圖像濾波
10個Python圖像處理工具,非常全了

10個Python圖像處理工具,非常全了

  • 使用match template函數進行模板匹配
10個Python圖像處理工具,非常全了

2. Numpy

Numpy是Python編程中的核心庫之一,提供對數組的支持。圖像本質上是一個包含數據點像素的標準Numpy數組。因此,通過使用基本的NumPy操作,如切片、屏蔽和花式索引,我們可以修改圖像的像素值。可以使用skimage加載圖像,並使用matplotlib顯示圖像。

資源

完整的資源和文檔列表可以在Numpy的官方文檔頁面上找到。

使用

使用Numpy來對圖像做掩模

10個Python圖像處理工具,非常全了

10個Python圖像處理工具,非常全了

3. Scipy

scipy是Python的另一個核心科學模塊,類似於Numpy,可用於基本的圖像處理和處理任務。特別是子模塊 scipy.ndimage。提供在n維NumPy數組上操作的函數。該軟件包目前包括線性和非線性濾波、二元形態學、b樣條插值和物體測量功能。

資源

獲取由 scipy.ndimage 提供的完整函數列表,請參考文檔(https://docs.scipy.org/doc/scipy/reference/tutorial/ndimage.html#correlation-and-convolution)。

使用

用SciPy,使用高斯濾波器來做圖像的模糊:

10個Python圖像處理工具,非常全了

10個Python圖像處理工具,非常全了

4. PIL/ Pillow

PIL(Python Imaging Library)是Python編程語言的一個免費庫,它支持打開、操作和保存許多不同的圖像文件格式。然而,隨著2009年最後一次發佈,它的開發停滯不前。幸運的是,有Pillow,這是PIL的一個積極開發的分支,更容易安裝,支持所有主要的操作系統,並支持Python3。該庫包含基本的圖像處理功能,包括點操作、使用一組內置卷積核進行過濾和顏色空間轉換。

資源

文檔:https://pillow.readthedocs.io/en/3.1.x/index.html提供了安裝說明以及庫中每個模塊的示例。

使用

在Pillow中使用ImageFilter增強圖像:

10個Python圖像處理工具,非常全了

10個Python圖像處理工具,非常全了

5. OpenCV-Python

OpenCV(開放源碼計算機視覺庫)是最廣泛使用的計算機視覺應用程序庫之一 *OpenCV- python *是OpenCV的python API。OpenCV-Python不僅速度快,因為後臺由用C/ c++編寫的代碼組成,而且易於編碼和部署(由於前臺有Python包裝器)。這使得它成為執行計算密集型計算機視覺程序的一個很好的選擇。

資源

OpenCV2-Python-Guide:https://github.com/abidrahmank/OpenCV2-Python-Tutorials讓使用OpenCV-Python變得很容易。

使用

下面的例子展示了OpenCV-Python在Image blend中使用金字塔創建一個名為'Orapple'的新水果。

10個Python圖像處理工具,非常全了

6. SimpleCV

SimpleCV也是一個用於構建計算機視覺應用程序的開源框架。有了它,你可以訪問幾個高性能的計算機視覺庫,如OpenCV,而不必首先了解位深度、文件格式、顏色空間等。學習曲線大大小於OpenCV,正如他們的口號所說:讓計算機視覺變得容易”。一些擁護SimpleCV的觀點是:

  • 即使是初學者也可以編寫簡單的機器視覺測試
  • 攝像頭、視頻文件、圖像和視頻流都是可互操作的

資源

官方的文檔非常容易理解,並且有大量的例子和用例可以遵循。

使用

10個Python圖像處理工具,非常全了

7. Mahotas

Mahotas是另一個用於Python的計算機視覺和圖像處理庫。它包含傳統的圖像處理功能,如濾波和形態學操作,以及更現代的計算機視覺功能,用於特徵計算,包括興趣點檢測和局部描述符。該接口是用Python編寫的,適合於快速開發,但是算法是用c++實現的,並且針對速度進行了調優。Mahotas庫速度快,代碼簡潔,甚至具有最小的依賴性。閱讀他們的官方論文以獲得更多的瞭解。

資源

官方文檔包含安裝說明、示例甚至一些教程,可以幫助你輕鬆地開始使用。

使用

Mahotas庫依賴於使用簡單的代碼來完成任務。對於“查找Wally''的問題,Mahotas做得很好,而且只需要最少的代碼。這是源代碼。

10個Python圖像處理工具,非常全了

10個Python圖像處理工具,非常全了

8. SimpleITK

ITK或Insight Segmentation and Registration Toolkit是一個開源的跨平臺系統,為開發人員提供了一套廣泛的圖像分析軟件工具。其中,SimpleITK是構建在ITK之上的一個簡化層,旨在促進其在快速原型設計、教育和解釋語言中的使用。SimpleITK是一個圖像分析工具包,包含大量支持一般過濾操作、圖像分割和註冊的組件。SimpleITK本身是用c++編寫的,但是可以用於包括Python在內的許多編程語言。

資源

提供了大量Jupyter Notebooks,用來說明SimpleITK用於教育和研究活動。這些Notebooks演示了使用SimpleITK使用Python和R編程語言進行交互式圖像分析。

使用

下面的動畫是用SimpleITK和Python創建的準確的CT/MR登記過程的可視化。閱讀源代碼在此處:https://github.com/insightsoftwareassocitium/simpleitk-notebooks/blob/master/ties/intro_anim.py。

9. pgmagick

pgmagick是GraphicsMagick庫的一個基於python的包裝器。圖像處理系統有時被稱為圖像處理的瑞士軍刀。它提供了一個健壯而高效的工具和庫集合,支持以88種主要格式(包括重要格式,如DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM和TIFF)讀取、寫入和操作圖像。

資源

有一個專門用於PgMagick的Github Repository,其中有安裝和需求說明。還有一個關於這個主題的詳細user guid。

使用

使用

pgmagick可以執行的圖像處理活動很少:

圖像縮放:

10個Python圖像處理工具,非常全了

邊緣提取:

10個Python圖像處理工具,非常全了

10. Pycairo

Pycairo是cairo圖形庫的一組python綁定。Cairo是一個用於繪製矢量圖形的2D圖形庫。矢量圖形很有趣,因為它們在調整大小或轉換時不會失去清晰度。Pycairo是cairo的一組綁定,可用於從Python調用cairo命令。

資源

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

使用

使用Pycairo繪製線條、基本形狀和徑向梯度

10個Python圖像處理工具,非常全了

總結

這些是Python中一些有用且免費的圖像處理庫。有些是眾所周知的,有些可能對你來說是新的。可以試著多瞭解一下。

英文原文:https://towardsdatascience.com/image-manipulation-tools-for-python-6eb0908ed61f

10個Python圖像處理工具,非常全了


分享到:


相關文章: