10 個 Python 圖像編輯工具

以下提到的這些 Python 工具在編輯圖像、操作圖像底層數據方面都提供了簡單直接的方法。

當今的世界充滿了數據,而圖像數據就是其中很重要的一部分。但只有經過處理和分析,提高圖像的質量,從中提取出有效地信息,才能利用到這些圖像數據。

常見的圖像處理操作包括顯示圖像,基本的圖像操作,如裁剪、翻轉、旋轉;圖像的分割、分類、特徵提取;圖像恢復;以及圖像識別等等。Python 作爲一種日益風靡的科學編程語言,是這些圖像處理操作的最佳選擇。同時,在 Python 生態當中也有很多可以免費使用的優秀的圖像處理工具。

下文將介紹 10 個可以用於圖像處理任務的 Python 庫,它們在編輯圖像、查看圖像底層數據方面都提供了簡單直接的方法。

1、scikit-image

scikit-image 是一個結合 NumPy 數組使用的開源 Python 工具,它實現了可用於研究、教育、工業應用的算法和應用程序。即使是對於剛剛接觸 Python 生態圈的新手來說,它也是一個在使用上足夠簡單的庫。同時它的代碼質量也很高,因爲它是由一個活躍的志願者社區開發的,並且通過了同行評審peer review。

資源

scikit-image 的文檔非常完善,其中包含了豐富的用例。

示例

可以通過導入 skimage 使用,大部分的功能都可以在它的子模塊中找到。

圖像濾波image filtering:


1240


1240

使用 match_template() 方法實現模板匹配template matching:


1240

在展示頁面可以看到更多相關的例子。

2、NumPy

NumPy 提供了對數組的支持,是 Python 編程的一個核心庫。圖像的本質其實也是一個包含像素數據點的標準 NumPy 數組,因此可以通過一些基本的 NumPy 操作(例如切片、掩膜mask、花式索引fancy indexing等),就可以從像素級別對圖像進行編輯。通過 NumPy 數組存儲的圖像也可以被 skimage 加載並使用 matplotlib 顯示。

資源

在 NumPy 的官方文檔中提供了完整的代碼文檔和資源列表。

示例

使用 NumPy 對圖像進行掩膜mask操作:


1240


3、SciPy

像 NumPy 一樣,SciPy 是 Python 的一個核心科學計算模塊,也可以用於圖像的基本操作和處理。尤其是 SciPy v1.1.0 中的 scipy.ndimage 子模塊,它提供了在 n 維 NumPy 數組上的運行的函數。SciPy 目前還提供了線性和非線性濾波linear and non-linear filtering、二值形態學binary morphology、B 樣條插值B-spline interpolation、對象測量object measurements等方面的函數。

資源

在官方文檔中可以查閱到 scipy.ndimage 的完整函數列表。

示例

使用 SciPy 的高斯濾波對圖像進行模糊處理:


1240


1240

4、PIL/Pillow

PIL (Python Imaging Library) 是一個免費 Python 編程庫,它提供了對多種格式圖像文件的打開、編輯、保存的支持。但在 2009 年之後 PIL 就停止發佈新版本了。幸運的是,還有一個 PIL 的積極開發的分支 Pillow,它的安裝過程比 PIL 更加簡單,支持大部分主流的操作系統,並且還支持 Python 3。Pillow 包含了圖像的基礎處理功能,包括像素點操作、使用內置卷積內核進行濾波、顏色空間轉換等等。

資源

Pillow 的官方文檔提供了 Pillow 的安裝說明自己代碼庫中每一個模塊的示例。

示例

使用 Pillow 中的 ImageFilter 模塊實現圖像增強:


1240


1240


5、OpenCV-Python

OpenCV(Open Source Computer Vision 庫)是計算機視覺領域最廣泛使用的庫之一,OpenCV-Python 則是 OpenCV 的 Python API。OpenCV-Python 的運行速度很快,這歸功於它使用 C/C++ 編寫的後臺代碼,同時由於它使用了 Python 進行封裝,因此調用和部署的難度也不大。這些優點讓 OpenCV-Python 成爲了計算密集型計算機視覺應用程序的一個不錯的選擇。

資源

入門之前最好先閱讀 OpenCV2-Python-Guide 這份文檔。

示例

使用 OpenCV-Python 中的金字塔融合Pyramid Blending將蘋果和橘子融合到一起:

1240

6、SimpleCV

SimpleCV 是一個開源的計算機視覺框架。它支持包括 OpenCV 在內的一些高性能計算機視覺庫,同時不需要去了解位深度bit depth、文件格式、色彩空間color space之類的概念,因此 SimpleCV 的學習曲線要比 OpenCV 平緩得多,正如它的口號所說,“將計算機視覺變得更簡單”。SimpleCV 的優點還有:

即使是剛剛接觸計算機視覺的程序員也可以通過 SimpleCV 來實現一些簡易的計算機視覺測試

錄像、視頻文件、圖像、視頻流都在支持範圍內

資源

官方文檔簡單易懂,同時也附有大量的學習用例。

示例

1240

7、Mahotas

Mahotas 是另一個 Python 圖像處理和計算機視覺庫。在圖像處理方面,它支持濾波和形態學相關的操作;在計算機視覺方面,它也支持特徵計算feature computation、興趣點檢測interest point detection、局部描述符local descriptors等功能。Mahotas 的接口使用了 Python 進行編寫,因此適合快速開發,而算法使用 C++ 實現,並針對速度進行了優化。Mahotas 儘可能做到代碼量少和依賴項少,因此它的運算速度非常快。可以參考官方文檔瞭解更多詳細信息。

資源

文檔包含了安裝介紹、示例以及一些 Mahotas 的入門教程。

示例

Mahotas 力求使用少量的代碼來實現功能。例如這個 Finding Wally 遊戲:

1240

1240

8、SimpleITK

ITK(Insight Segmentation and Registration Toolkit)是一個爲開發者提供普適性圖像分析功能的開源、跨平臺工具套件,SimpleITK 則是基於 ITK 構建出來的一個簡化層,旨在促進 ITK 在快速原型設計、教育、解釋語言中的應用。SimpleITK 作爲一個圖像分析工具包,它也帶有大量的組件,可以支持常規的濾波、圖像分割、圖像配準registration功能。儘管 SimpleITK 使用 C++ 編寫,但它也支持包括 Python 在內的大部分編程語言。

資源

有很多 Jupyter Notebooks 用例可以展示 SimpleITK 在教育和科研領域中的應用,通過這些用例可以看到如何使用 Python 和 R 利用 SimpleITK 來實現交互式圖像分析。

示例

使用 Python + SimpleITK 實現的 CT/MR 圖像配準過程:

strip

9、pgmagick

pgmagick 是使用 Python 封裝的 GraphicsMagick 庫。GraphicsMagick 通常被認爲是圖像處理界的瑞士×××,因爲它強大而又高效的工具包支持對多達 88 種主流格式圖像文件的讀寫操作,包括 DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM、TIFF 等等。

資源

pgmagick 的 GitHub 倉庫中有相關的安裝說明、依賴列表,以及詳細的使用指引。

示例

圖像縮放:

1240

邊緣提取:

1240

10、Pycairo

Cairo 是一個用於繪製矢量圖的二維圖形庫,而 Pycairo 是用於 Cairo 的一組 Python 綁定。矢量圖的優點在於做大小縮放的過程中不會丟失圖像的清晰度。使用 Pycairo 可以在 Python 中調用 Cairo 的相關命令。

資源

Pycairo 的 GitHub 倉庫提供了關於安裝和使用的詳細說明,以及一份簡要介紹 Pycairo 的入門指南。

示例

使用 Pycairo 繪製線段、基本圖形、徑向漸變radial gradients:

1240

總結

以上就是 Python 中的一些有用的圖像處理庫,無論你有沒有聽說過、有沒有使用過,都值得試用一下並瞭解它們。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章