10個(gè)Python圖像處理工具,非常全了
導(dǎo)讀
10個(gè)常用的可以進(jìn)行圖像處理的Python庫(kù)的介紹,可能有些你還沒(méi)用過(guò),可以試試看!
介紹
我們這個(gè)世界充滿(mǎn)了數(shù)據(jù),而圖像是這些數(shù)據(jù)的重要組成部分。然而,要想使用這些圖像,需要對(duì)它們進(jìn)行處理。因此,圖像處理是分析和處理數(shù)字圖像的必要的過(guò)程,其主要目的是提高圖像質(zhì)量或從中提取一些信息,然后加以利用。
圖像處理中常見(jiàn)的任務(wù)包括圖像顯示、裁剪、翻轉(zhuǎn)、旋轉(zhuǎn)等基本操作、圖像分割、分類(lèi)和特征提取、圖像恢復(fù)和圖像識(shí)別。Python成為這種圖像處理任務(wù)的合適選擇。這是因?yàn)樗鳛橐环N科學(xué)編程語(yǔ)言越來(lái)越受歡迎,而且在其生態(tài)系統(tǒng)中有許多最先進(jìn)的圖像處理工具可以免費(fèi)使用。
我們來(lái)看一些用于圖像處理任務(wù)的常用Python庫(kù)。
1. scikit Image
scikit-image是一個(gè)開(kāi)源的Python包,可以使用 numpy 數(shù)組。它實(shí)現(xiàn)了用于研究、教育和工業(yè)應(yīng)用的算法和實(shí)用程序。它是一個(gè)相當(dāng)簡(jiǎn)單和直接的庫(kù),即使對(duì)于Python生態(tài)系統(tǒng)的新手也是如此。這些代碼是由活躍的志愿者社區(qū)編寫(xiě)的,具有高質(zhì)量和同行評(píng)審的特性。
資源
它已經(jīng)通過(guò)大量的例子和實(shí)際的用例很好地文檔化了。閱讀文檔:(http://scikit-image.org/docs/stable/user_guide.html)。
使用
包被導(dǎo)入為 skimage,大多數(shù)函數(shù)都在子模塊中可以找到。skimage的一些例子包括:
- 圖像濾波
- 使用match template函數(shù)進(jìn)行模板匹配
2. Numpy
Numpy是Python編程中的核心庫(kù)之一,提供對(duì)數(shù)組的支持。圖像本質(zhì)上是一個(gè)包含數(shù)據(jù)點(diǎn)像素的標(biāo)準(zhǔn)Numpy數(shù)組。因此,通過(guò)使用基本的NumPy操作,如切片、屏蔽和花式索引,我們可以修改圖像的像素值??梢允褂胹kimage加載圖像,并使用matplotlib顯示圖像。
資源
完整的資源和文檔列表可以在Numpy的官方文檔頁(yè)面上找到。
使用
使用Numpy來(lái)對(duì)圖像做掩模
3. Scipy
scipy是Python的另一個(gè)核心科學(xué)模塊,類(lèi)似于Numpy,可用于基本的圖像處理和處理任務(wù)。特別是子模塊 scipy.ndimage。提供在n維NumPy數(shù)組上操作的函數(shù)。該軟件包目前包括線性和非線性濾波、二元形態(tài)學(xué)、b樣條插值和物體測(cè)量功能。
資源
獲取由 scipy.ndimage 提供的完整函數(shù)列表,請(qǐng)參考文檔(https://docs.scipy.org/doc/scipy/reference/tutorial/ndimage.html#correlation-and-convolution)。
使用
用SciPy,使用高斯濾波器來(lái)做圖像的模糊:
4. PIL/ Pillow
PIL(Python Imaging Library)是Python編程語(yǔ)言的一個(gè)免費(fèi)庫(kù),它支持打開(kāi)、操作和保存許多不同的圖像文件格式。然而,隨著2009年最后一次發(fā)布,它的開(kāi)發(fā)停滯不前。幸運(yùn)的是,有Pillow,這是PIL的一個(gè)積極開(kāi)發(fā)的分支,更容易安裝,支持所有主要的操作系統(tǒng),并支持Python3。該庫(kù)包含基本的圖像處理功能,包括點(diǎn)操作、使用一組內(nèi)置卷積核進(jìn)行過(guò)濾和顏色空間轉(zhuǎn)換。
資源
文檔:https://pillow.readthedocs.io/en/3.1.x/index.html提供了安裝說(shuō)明以及庫(kù)中每個(gè)模塊的示例。
使用
在Pillow中使用ImageFilter增強(qiáng)圖像:
5. OpenCV-Python
OpenCV(開(kāi)放源碼計(jì)算機(jī)視覺(jué)庫(kù))是最廣泛使用的計(jì)算機(jī)視覺(jué)應(yīng)用程序庫(kù)之一。 *OpenCV- python *是OpenCV的python API。OpenCV-Python不僅速度快,因?yàn)楹笈_(tái)由用C/ c++編寫(xiě)的代碼組成,而且易于編碼和部署(由于前臺(tái)有Python包裝器)。這使得它成為執(zhí)行計(jì)算密集型計(jì)算機(jī)視覺(jué)程序的一個(gè)很好的選擇。
資源
OpenCV2-Python-Guide:https://github.com/abidrahmank/OpenCV2-Python-Tutorials讓使用OpenCV-Python變得很容易。
使用
下面的例子展示了OpenCV-Python在Image blend中使用金字塔創(chuàng)建一個(gè)名為'Orapple'的新水果。
6. SimpleCV
SimpleCV也是一個(gè)用于構(gòu)建計(jì)算機(jī)視覺(jué)應(yīng)用程序的開(kāi)源框架。有了它,你可以訪問(wèn)幾個(gè)高性能的計(jì)算機(jī)視覺(jué)庫(kù),如OpenCV,而不必首先了解位深度、文件格式、顏色空間等。學(xué)習(xí)曲線大大小于OpenCV,正如他們的口號(hào)所說(shuō):讓計(jì)算機(jī)視覺(jué)變得容易”。一些擁護(hù)SimpleCV的觀點(diǎn)是:
- 即使是初學(xué)者也可以編寫(xiě)簡(jiǎn)單的機(jī)器視覺(jué)測(cè)試
- 攝像頭、視頻文件、圖像和視頻流都是可互操作的
資源
官方的文檔非常容易理解,并且有大量的例子和用例可以遵循。
使用
7. Mahotas
Mahotas是另一個(gè)用于Python的計(jì)算機(jī)視覺(jué)和圖像處理庫(kù)。它包含傳統(tǒng)的圖像處理功能,如濾波和形態(tài)學(xué)操作,以及更現(xiàn)代的計(jì)算機(jī)視覺(jué)功能,用于特征計(jì)算,包括興趣點(diǎn)檢測(cè)和局部描述符。該接口是用Python編寫(xiě)的,適合于快速開(kāi)發(fā),但是算法是用c++實(shí)現(xiàn)的,并且針對(duì)速度進(jìn)行了調(diào)優(yōu)。Mahotas庫(kù)速度快,代碼簡(jiǎn)潔,甚至具有最小的依賴(lài)性。閱讀他們的官方論文以獲得更多的了解。
資源
官方文檔包含安裝說(shuō)明、示例甚至一些教程,可以幫助你輕松地開(kāi)始使用。
使用
Mahotas庫(kù)依賴(lài)于使用簡(jiǎn)單的代碼來(lái)完成任務(wù)。對(duì)于“查找Wally''的問(wèn)題,Mahotas做得很好,而且只需要最少的代碼。這是源代碼。
8. SimpleITK
ITK或Insight Segmentation and Registration Toolkit是一個(gè)開(kāi)源的跨平臺(tái)系統(tǒng),為開(kāi)發(fā)人員提供了一套廣泛的圖像分析軟件工具。其中,SimpleITK是構(gòu)建在ITK之上的一個(gè)簡(jiǎn)化層,旨在促進(jìn)其在快速原型設(shè)計(jì)、教育和解釋語(yǔ)言中的使用。SimpleITK是一個(gè)圖像分析工具包,包含大量支持一般過(guò)濾操作、圖像分割和注冊(cè)的組件。SimpleITK本身是用c++編寫(xiě)的,但是可以用于包括Python在內(nèi)的許多編程語(yǔ)言。
資源
提供了大量Jupyter Notebooks,用來(lái)說(shuō)明SimpleITK用于教育和研究活動(dòng)。這些Notebooks演示了使用SimpleITK使用Python和R編程語(yǔ)言進(jìn)行交互式圖像分析。
使用
下面的動(dòng)畫(huà)是用SimpleITK和Python創(chuàng)建的準(zhǔn)確的CT/MR登記過(guò)程的可視化。閱讀源代碼在此處:https://github.com/insightsoftwareassocitium/simpleitk-notebooks/blob/master/ties/intro_anim.py。
9. pgmagick
pgmagick是GraphicsMagick庫(kù)的一個(gè)基于python的包裝器。圖像處理系統(tǒng)有時(shí)被稱(chēng)為圖像處理的瑞士軍刀。它提供了一個(gè)健壯而高效的工具和庫(kù)集合,支持以88種主要格式(包括重要格式,如DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM和TIFF)讀取、寫(xiě)入和操作圖像。
資源
有一個(gè)專(zhuān)門(mén)用于PgMagick的Github Repository,其中有安裝和需求說(shuō)明。還有一個(gè)關(guān)于這個(gè)主題的詳細(xì)user guid。
使用
使用pgmagick可以執(zhí)行的圖像處理活動(dòng)很少:
圖像縮放:
邊緣提?。?/p>
10. Pycairo
Pycairo是cairo圖形庫(kù)的一組python綁定。Cairo是一個(gè)用于繪制矢量圖形的2D圖形庫(kù)。矢量圖形很有趣,因?yàn)樗鼈冊(cè)谡{(diào)整大小或轉(zhuǎn)換時(shí)不會(huì)失去清晰度。Pycairo是cairo的一組綁定,可用于從Python調(diào)用cairo命令。
資源
Pycairo GitHub repository是一個(gè)很好的資源,有關(guān)于安裝和使用的詳細(xì)說(shuō)明。還有一個(gè)入門(mén)指南,其中有一個(gè)關(guān)于Pycairo的簡(jiǎn)短教程。
使用
使用Pycairo繪制線條、基本形狀和徑向梯度
總結(jié)
這些是Python中一些有用且免費(fèi)的圖像處理庫(kù)。有些是眾所周知的,有些可能對(duì)你來(lái)說(shuō)是新的??梢栽囍嗔私庖幌隆?/p>