10 個 Python 圖像編輯工具

2021-03-02 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 inlinefrom skimage import data,filtersimage = 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 npfrom skimage import dataimport matplotlib.pyplot as plt%matplotlib inlineimage = data.camera()type(image)numpy.ndarray #Image is a NumPy array:mask = image < 87image[mask]=255plt.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,ndimageface = misc.face()blurred_face = ndimage.gaussian_filter(face, sigma=3)very_blurred = ndimage.gaussian_filter(face, sigma=5)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,ImageFilterim = Image.open('image.jpg')im.show()from PIL import ImageEnhanceenh = ImageEnhance.Contrast(im)enh.enhance(1.8).show("30% more contrast")

Enhancing an image in Pillow using ImageFilter

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

6、SimpleCV

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

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

9、pgmagick

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

資源

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

示例

圖像縮放:

Image scaling in pgmagick

邊緣提取:

Edge extraction in pgmagick

10、Pycairo

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

資源

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

示例

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

Pycairo

總結

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

覺得本文對你有幫助?請分享給更多人

關注「Python開發者」加星標,提升Python技能

喜歡就點一下「好看」唄~

相關焦點

  • Python中的十大圖像處理工具
    Python之成為圖像處理任務的最佳選擇,是因為這一科學程式語言日益普及,並且其自身免費提供許多最先進的圖像處理工具。讓我們看一下用於圖像處理任務的一些常用Python庫。01 scikit Imagescikit-image是一個基於numpy數組的開源Python包。
  • 用 Python 進行 OCR 圖像識別
    用python就可以實現,採用現在流行的OCR圖像識別。可以設定好參數,根據坐標系把圖片裁剪成一個個小方塊,如下圖,儲存為jpg格式。,使用tools下的merge tiff工具,將圖片合併成tiff文件。
  • MMEditing: 多任務圖像視頻編輯工具箱
    這是一個圖像和視頻編輯的工具箱,它目前包含了常見的編輯任務,例如圖像修復,圖像摳圖,超解析度和生成模型。在編輯圖像或者視頻的時候,往往是需要組合使用以上任務的,因此本工作將這些任務整理到一個統一的框架下,方便大家使用。為了幫助更多的同學在復現上少走彎路,並且實現可以在一個相同的環境下比較不同的settings, 香港中文大學多媒體實驗室(MMLab)推出了OpenMMLab計劃。
  • 可去圖像馬賽克的工具發布
    如果可能,請使用與創建像素化圖像相同的屏幕截圖工具。運行 python depix.py -p [pixelated rectangle image] -s [search sequence image] -o output.png算法該算法利用線性濾波器分別處理每個塊。
  • 總結 | 計算機視覺中的圖像標註工具
    轉載自丨CV技術指南在這裡,我們總結了一些用於計算機視覺任務的最佳圖像標記工具:labelme、labelImg、CVAT和hasty.ailabelme地址:https://github.com你可以用它做什麼labelme 是一個基於 python 的開源圖像多邊形標註工具,可用於手動標註圖像以進行對象檢測、分割和分類。
  • Python+OpenCV的基礎圖像處理操作匯總
    通過在CMD(命令提示符)中發出以下命令來安裝opencv python(這是一個用於python的非正式預構建opencv包):opencv-contrib-python(包含main和contrib模塊)opencv-python-headless(與opencv-python相同,但沒有GUI功能)opencv-contrib-python-headless
  • 在Windows配置Python的圖像處理(pillow,matplotlib,opencv)
    介紹1.1 介紹Python處理圖像有幾個常用的庫,包括Pillow、Matplotlib、OpenCV,今天童鞋們就跟著福哥對這三種庫進行一個初步了解吧。我們先學習這三個庫的安裝方法,再學習這三個庫的基本使用方法,大家可以根據實際情況進行選擇。2.
  • 在 Linux 下截屏並編輯的最佳工具 | Linux 中國
    有幾種獲取屏幕截圖並對其進行添加文字、箭頭等編輯的方法,這裡提及的的屏幕截圖工具在 Ubuntu 和其它主流 Linux 發行版中都能夠使用。當我的主力作業系統從 Windows 轉換到 Ubuntu 的時候,首要考慮的就是屏幕截圖工具的可用性。儘管使用默認的鍵盤快捷鍵也可以獲取屏幕截圖,但如果使用屏幕截圖工具,可以更方便地對屏幕截圖進行編輯。
  • 【乾貨】計算機視覺實戰系列03——用Python做圖像處理
    Numpy基本操作和圖像灰度變換Python中有好多工具包應用於圖像處理當中,本章作為入門章節,首先來介紹Python中最基本的幾個工具包,也希望讀者可以在之後自行練習。('獲取數組a2第一行的第三,四,五個元素:', a2[0, 2:5]) # 截取第二行,第三、四、五列,返回 [3 4 5]b = a2[a2 > 6] # 截取矩陣a中大於6的元素,範圍的是一維數組print('矩陣中大於6的元素是:', b) # 返回 [ 7  8  9 10]a2[a2 > 6] = 0print(a2
  • 20 個有用的 SVG 工具,提供更好的圖像處理
    SVG 現正在 Web 設計領域變得越發流行, 你可以使用 Illustrator 或者 Inkscape 來創建 SVG 圖像。 但當進行 Web 設計時,我們還需要做一些優化來使得 SVG 變得更加輕量。下面介紹的 20 個工具,可以幫助你快速有效的創建 SVG 圖像。現有的在線工具已經可以幫助我們進行優化、轉換、新建模式等工作。
  • Python OpenCV 實現圖像融合
    來自:https://www.linuxmi.com/python-opencv-image-blending.html在本文中
  • python人工智慧-圖像識別
    PIL:(Python Imaging Library)是Python平臺上的圖像處理標準庫,功能非常強大。pytesseract:圖像識別庫。我這裡使用的是python3.6,PIL不支持python3所以使用如下命令pip install pytesseractpip install pillow如果是python2,則在命令行執行如下命令:pip install pytesseractpip install PIL這時候我們去運行上面的代碼會發現如下錯誤
  • 在 Linux 下截屏並編輯的最佳工具
    儘管使用默認的鍵盤快捷鍵也可以獲取屏幕截圖,但如果使用屏幕截圖工具,可以更方便地對屏幕截圖進行編輯。本文將會介紹在不適用第三方工具的情況下,如何通過系統自帶的方法和工具獲取屏幕截圖,另外還會介紹一些可用於 Linux 的最佳截圖工具。
  • Python PIL庫圖像處理基本操作
    介紹    PIL(Python Image Library)是python的第三方圖像處理庫,但是由於其強大的功能與眾多的使用人數,幾乎已經被認為是python官方圖像處理庫了。其官方主頁為:PIL。
  • 使用Python+OpenCV實現圖像數據採集
    conda create -n opencv python=3.6這將在Python版本3.6中創建一個名為opencv的新環境,可以用正在使用的任何版本替換它。pip install opencv-python用CV2拍照接下來,我們必須創建一個視頻捕獲實例。
  • Python 進階必備:圖像庫 pillow
    模塊介紹pillow 庫提供了廣泛的文件格式支持、高效的內部表示和非常強大的圖像處理功能,包含了大約 25 個子模塊,其中的核心是 Image 模塊。Image 模塊是為了快速訪問以下幾種基本像素格式存儲的數據而設計的,為一般的圖像處理工具提供了一個堅實的基礎。下表是 pillow 庫中最常用的3個子模塊(圖像處理、編輯、截屏)和3個輔助模塊(過濾器、顏色、字體)。
  • 【乾貨】計算機視覺實戰系列01——用Python做圖像處理
    專知成員hui計劃推出一系列計算機視覺入門實戰講解,以時下最流行的Python語言為工具,對圖像處理技術的具體操作進行詳細講述,旨在讓零基礎的讀者也可以輕鬆上手! 基本的圖像操作和處理 Python中有好多工具包應用於圖像處理當中,這一節作為入門章節,首先來介紹Python中最基本的幾個工具包,也希望讀者可以在之後自行練習。
  • 【python3.10安裝教程】在 Windows 上使用 Python3.10最新版本
    它需要Windows 10,但可以安全地安裝而不會破壞其他程序。它還提供了許多方便的命令來啟動Python及其工具。nuget.org 安裝包 是用於持續集成系統的輕量級安裝。它可用於構建Python包或運行腳本,但不可更新且沒有用戶界面工具。可嵌入的包 是Python的最小安裝包,適合嵌入到更大的應用程式中。4.1. 完整安裝程序4.1.1.
  • 【乾貨】計算機視覺實戰系列08——用Python做圖像處理
    【導讀】在前面幾講中,專知成員Hui介紹了PIL、Matplotlib、Numpy、SciPy等Python圖像處理的工具包。
  • Python中的圖像增強技術
    AI 前線導讀:圖像增強是一種非常強大的技術,針對現有圖像人為創建各種變化以擴展圖像數據集,例如縮放現有圖像、將現有圖像旋轉幾度、剪切或裁剪圖像等等。在本文中,我們將使用 imgaug 庫探索 Python 中的圖像增強技術。