10 個 Python 影象編輯工具
(給Python開發者加星標,提升Python技能)
編譯:linux-中國,作者: Parul Pandey
https://linux.cn/article-10679-1.html
以下提到的這些 Python 工具在編輯影象、操作影象底層資料方面都提供了簡單直接的方法。
當今的世界充滿了資料,而影象資料就是其中很重要的一部分。但只有經過處理和分析,提高影象的質量,從中提取出有效地資訊,才能利用到這些影象資料。
常見的影象處理操作包括顯示影象,基本的影象操作,如裁剪、翻轉、旋轉;影象的分割、分類、特徵提取;影象恢復;以及影象識別等等。Python 作為一種日益風靡的科學程式語言,是這些影象處理操作的最佳選擇。同時,在 Python 生態當中也有很多可以免費使用的優秀的影象處理工具。
下文將介紹 10 個可以用於影象處理任務的 Python 庫,它們在編輯影象、檢視影象底層資料方面都提供了簡單直接的方法。
1、scikit-image
scikit-image 是一個結合 NumPy 陣列使用的開源 Python 工具,它實現了可用於研究、教育、工業應用的演算法和應用程式。即使是對於剛剛接觸 Python 生態圈的新手來說,它也是一個在使用上足夠簡單的庫。同時它的程式碼質量也很高,因為它是由一個活躍的志願者社群開發的,並且通過了同行評審peer review。
資源
scikit-image 的文件非常完善,其中包含了豐富的用例。
示例
可以通過匯入 skimage
使用,大部分的功能都可以在它的子模組中找到。
影象濾波image filtering:
import matplotlib.pyplot as plt
%matplotlib inline
from skimage import data,filters
image = data.coins() # ... or any other NumPy array!
edges = filters.sobel(image)
plt.imshow(edges, cmap='gray')
Image filtering in scikit-image
使用 match_template() 方法實現模板匹配template matching:
Template matching in scikit-image
在展示頁面可以看到更多相關的例子。
2、NumPy
NumPy 提供了對陣列的支援,是 Python 程式設計的一個核心庫。影象的本質其實也是一個包含畫素資料點的標準 NumPy 陣列,因此可以通過一些基本的 NumPy 操作(例如切片、掩膜mask、花式索引fancy indexing等),就可以從畫素級別對影象進行編輯。通過 NumPy 陣列儲存的影象也可以被 skimage 載入並使用 matplotlib 顯示。
資源
在 NumPy 的官方文件中提供了完整的程式碼文件和資源列表。
示例
使用 NumPy 對影象進行掩膜mask操作:
import numpy as np
from skimage import data
import matplotlib.pyplot as plt
%matplotlib inline
image = data.camera()
type(image)
numpy.ndarray #Image is a NumPy array:
mask = image < 87
image[mask]=255
plt.imshow(image, cmap='gray')
NumPy
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 的高斯濾波對影象進行模糊處理:
from scipy import misc,ndimage
face = misc.face()
blurred_face = ndimage.gaussian_filter(face, sigma=3)
very_blurred = ndimage.gaussian_filter(face, sigma=5)
#Results
plt.imshow(<image to be displayed>)
Using a Gaussian filter in SciPy
4、PIL/Pillow
PIL (Python Imaging Library) 是一個免費 Python 程式設計庫,它提供了對多種格式影象檔案的開啟、編輯、儲存的支援。但在 2009 年之後 PIL 就停止釋出新版本了。幸運的是,還有一個 PIL 的積極開發的分支 Pillow,它的安裝過程比 PIL 更加簡單,支援大部分主流的作業系統,並且還支援 Python 3。Pillow 包含了影象的基礎處理功能,包括畫素點操作、使用內建卷積核心進行濾波、顏色空間轉換等等。
資源
Pillow 的官方文件提供了 Pillow 的安裝說明自己程式碼庫中每一個模組的示例。
示例
使用 Pillow 中的 ImageFilter 模組實現影象增強:
from PIL import Image,ImageFilter
#Read image
im = Image.open('image.jpg')
#Display image
im.show()
from PIL import ImageEnhance
enh = ImageEnhance.Contrast(im)
enh.enhance(1.8).show("30% more contrast")
Enhancing an image in Pillow using ImageFilter
原始碼 連結:http://sipi.usc.edu/database/
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將蘋果和橘子融合到一起:
Image blending using Pyramids in OpenCV-Python
原始碼 連結:https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_pyramids/py_pyramids.html#pyramids
6、SimpleCV
SimpleCV 是一個開源的計算機視覺框架。它支援包括 OpenCV 在內的一些高效能運算機視覺庫,同時不需要去了解位深度bit depth、檔案格式、色彩空間color space之類的概念,因此 SimpleCV 的學習曲線要比 OpenCV 平緩得多,正如它的口號所說,“將計算機視覺變得更簡單”。SimpleCV 的優點還有:
即使是剛剛接觸計算機視覺的程式設計師也可以通過 SimpleCV 來實現一些簡易的計算機視覺測試
錄影、視訊檔案、影象、視訊流都在支援範圍內
資源
官方文件簡單易懂,同時也附有大量的學習用例。
示例
SimpleCV
7、Mahotas
Mahotas 是另一個 Python 影象處理和計算機視覺庫。在影象處理方面,它支援濾波和形態學相關的操作;在計算機視覺方面,它也支援特徵計算feature computation、興趣點檢測interest point detection、區域性描述符local descriptors等功能。Mahotas 的介面使用了 Python 進行編寫,因此適合快速開發,而演算法使用 C++ 實現,並針對速度進行了優化。Mahotas 儘可能做到程式碼量少和依賴項少,因此它的運算速度非常快。可以參考官方文件瞭解更多詳細資訊。
資源
文件包含了安裝介紹、示例以及一些 Mahotas 的入門教程。
示例
Mahotas 力求使用少量的程式碼來實現功能。例如這個 Finding Wally 遊戲:
Finding Wally problem in Mahotas
Finding Wally problem in Mahotas
原始碼 連結:https://mahotas.readthedocs.io/en/latest/wally.html
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 影象配準過程:
SimpleITK animation
原始碼 連結:https://github.com/InsightSoftwareConsortium/SimpleITK-Notebooks/blob/master/Utilities/intro_animation.py
9、pgmagick
pgmagick 是使用 Python 封裝的 GraphicsMagick 庫。GraphicsMagick 通常被認為是影象處理界的瑞士軍刀,因為它強大而又高效的工具包支援對多達 88 種主流格式影象檔案的讀寫操作,包括 DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM、TIFF 等等。
資源
pgmagick 的 GitHub 倉庫中有相關的安裝說明、依賴列表,以及詳細的使用指引。
示例
影象縮放:
Image scaling in pgmagick
原始碼 連結:https://pgmagick.readthedocs.io/en/latest/cookbook.html#scaling-a-jpeg-image
邊緣提取:
Edge extraction in pgmagick
原始碼 連結:https://pgmagick.readthedocs.io/en/latest/cookbook.html#edge-extraction
10、Pycairo
Cairo 是一個用於繪製向量圖的二維圖形庫,而 Pycairo 是用於 Cairo 的一組 Python 繫結。向量圖的優點在於做大小縮放的過程中不會丟失影象的清晰度。使用 Pycairo 可以在 Python 中呼叫 Cairo 的相關命令。
資源
Pycairo 的 GitHub 倉庫提供了關於安裝和使用的詳細說明,以及一份簡要介紹 Pycairo 的入門指南。
示例
使用 Pycairo 繪製線段、基本圖形、徑向漸變radial gradients:
Pycairo
原始碼 連結:http://zetcode.com/gfx/pycairo/basicdrawing/
總結
以上就是 Python 中的一些有用的影象處理庫,無論你有沒有聽說過、有沒有使用過,都值得試用一下並瞭解它們。
推薦閱讀
(點選標題可跳轉閱讀)
覺得本文對你有幫助?請分享給更多人
關注「Python開發者」加星標,提升Python技能
喜歡就點一下「好看」唄~
相關文章
- Python編輯開發工具:pycharm proPythonPyCharm
- python編輯器哪個好Python
- Python編輯開發工具:pycharm pro 2022PythonPyCharm
- Python編輯開發工具: pycharm pro 2021PythonPyCharm
- 在 Fedora 上使用 GIMP 輕鬆編輯影象
- 10個線上HTML程式碼編輯器HTML
- Fnt檔案編輯工具
- Mitti for Mac(影片編輯工具)MITMac
- 常用Python編輯器,你鍾愛哪一個?Python
- 好用的Python編輯器有哪些?五大工具!Python
- 專業的視訊編輯工具:視訊編輯軟體
- 今天的python編輯器Python
- Python影片編輯庫:MoviePyPython
- python如何開始編輯Python
- 資料編輯方案及其工具
- pdf編輯工具 PDF Expert中文
- Write on Video for Mac影片編輯工具IDEMac
- TeXShop for MacLatex編輯預覽工具Mac
- 極簡圖片編輯工具
- PDF Expert for mac(pdf編輯工具)Mac
- Fission for Mac音訊編輯工具Mac音訊
- Pixelmator Pro for Mac(影像編輯工具)Mac
- pdf編輯工具:PDF Expert for macMac
- Mac pdf編輯工具:PDF ExpertMac
- 一個貝塞爾曲線編輯工具(2d)
- [Python影象處理] 六.影象縮放、影象旋轉、影象翻轉與影象平移Python
- 10個超級有用的Python工具!Python
- [Python影象處理] 八.影象腐蝕與影象膨脹Python
- Python寫業務邏輯的幾個編碼原則Python
- 製作一個Node命令列影象識別工具命令列
- Python音影片編輯庫:moviepyPython
- Python視訊編輯庫:MoviePyPython
- python都用什麼編輯器Python
- pycharm pro Python編輯開發PyCharmPython
- Premiere Pro 2023:全新影片編輯工具REM
- Markdown文字編輯工具——Easy Markdown for MacMac
- 影片轉碼編輯工具Compressor for MacMac
- 視訊回放編輯工具:Mitti MacMITMac