十個 Python 圖像處理工具

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

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

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

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

1. scikit-image

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

資源

scikit-image 文檔豐富,有很多示例和實際使用方法。

用法

該包通過 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 中一些有用且免費提供的圖像處理庫。有些是衆所周知的,有些可能對你來說是新的。嘗試一下它們以瞭解更多關於它們的信息!

英文原文:https://opensource.com/article/19/3/python-image-manipulation-tools
譯者:搞一個大新聞

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/CSN0K7uoom2PlD7qxCa73A