Python中的十大圖像處理工具(小結(jié))
Python之成為圖像處理任務(wù)的最佳選擇,是因?yàn)檫@一科學(xué)編程語言日益普及,并且其自身免費(fèi)提供許多最先進(jìn)的圖像處理工具。本文主要介紹了一些簡單易懂最常用的Python圖像處理庫。
當(dāng)今世界充滿了各種數(shù)據(jù),而圖像是其中高的重要組成部分。然而,若想其有所應(yīng)用,我們需要對(duì)這些圖像進(jìn)行處理。圖像處理是分析和操縱數(shù)字圖像的過程,旨在提高其質(zhì)量或從中提取一些信息,然后將其用于某些方面。
圖像處理中的常見任務(wù)包括顯示圖像,基本操作(如裁剪、翻轉(zhuǎn)、旋轉(zhuǎn)等),圖像分割,分類和特征提取,圖像恢復(fù)和圖像識(shí)別等。 Python之成為圖像處理任務(wù)的最佳選擇,是因?yàn)檫@一科學(xué)編程語言日益普及,并且其自身免費(fèi)提供許多最先進(jìn)的圖像處理工具。
讓我們看一下用于圖像處理任務(wù)的一些常用Python庫。
1. scikit Image
scikit-image是一個(gè)基于numpy數(shù)組的開源Python包。 它實(shí)現(xiàn)了用于研究、教育和工業(yè)應(yīng)用的算法和實(shí)用程序。 即使是對(duì)于那些剛接觸Python的人,它也是一個(gè)相當(dāng)簡單的庫。 此庫代碼質(zhì)量非常高并已經(jīng)過同行評(píng)審,是由一個(gè)活躍的志愿者社區(qū)編寫的。
使用說明文檔:https://scikit-image.org/docs/stable/user_guide.html
用法舉例:圖像過濾、模版匹配
可使用“skimage”來導(dǎo)入該庫。大多數(shù)功能都能在子模塊中找到。
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')
模版匹配(使用match_template函數(shù))
gallery上還有更多例子。
https://scikit-image.org/docs/dev/auto_examples/
2. Numpy
Numpy是Python編程的核心庫之一,支持?jǐn)?shù)組結(jié)構(gòu)。 圖像本質(zhì)上是包含數(shù)據(jù)點(diǎn)像素的標(biāo)準(zhǔn)Numpy數(shù)組。 因此,通過使用基本的NumPy操作——例如切片、脫敏和花式索引,可以修改圖像的像素值。 可以使用skimage加載圖像并使用matplotlib顯示。
使用說明文檔:http://www.numpy.org/
用法舉例:使用Numpy來對(duì)圖像進(jìn)行脫敏處理
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')
3. Scipy
scipy是Python的另一個(gè)核心科學(xué)模塊,就像Numpy一樣,可用于基本的圖像處理和處理任務(wù)。值得一提的是,子模塊scipy.ndimage提供了在n維NumPy數(shù)組上運(yùn)行的函數(shù)。 該軟件包目前包括線性和非線性濾波、二進(jìn)制形態(tài)、B樣條插值和對(duì)象測量等功能。
使用說明文檔:
https://docs.scipy.org/doc/scipy/reference/tutorial/ndimage.html#correlation-and-convolution
用法舉例:使用SciPy的高斯濾波器對(duì)圖像進(jìn)行模糊處理
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>)
4. PIL/ Pillow
PIL (Python Imaging Library)是一個(gè)免費(fèi)的Python編程語言庫,它增加了對(duì)打開、處理和保存許多不同圖像文件格式的支持。 然而,它的發(fā)展停滯不前,其最后一次更新還是在2009年。幸運(yùn)的是, PIL有一個(gè)正處于積極開發(fā)階段的分支Pillow,它非常易于安裝。Pillow能在所有主要操作系統(tǒng)上運(yùn)行并支持Python 3。該庫包含基本的圖像處理功能,包括點(diǎn)操作、使用一組內(nèi)置卷積內(nèi)核進(jìn)行過濾以及顏色空間轉(zhuǎn)換。
使用說明文檔:https://pillow.readthedocs.io/en/3.1.x/index.html
用法舉例:使用ImageFilter增強(qiáng)Pillow中的圖像
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")
5. OpenCV-Python
OpenCV( 開源計(jì)算機(jī)視覺庫,Open Source Computer Vision Library)是計(jì)算機(jī)視覺應(yīng)用中使用最廣泛的庫之一。OpenCV-Python是OpenCV的python API。 OpenCV-Python不僅速度快(因?yàn)楹笈_(tái)由用C / C ++編寫的代碼組成),也易于編碼和部署(由于前端的Python包裝器)。 這使其成為執(zhí)行計(jì)算密集型計(jì)算機(jī)視覺程序的絕佳選擇。
使用說明文檔:https://github.com/abidrahmank/OpenCV2-Python-Tutorials
用法舉例:使用Pyramids創(chuàng)建一個(gè)名為'Orapple'的新水果的功能
6. SimpleCV
SimpleCV也是用于構(gòu)建計(jì)算機(jī)視覺應(yīng)用程序的開源框架。 通過它可以訪問如OpenCV等高性能的計(jì)算機(jī)視覺庫,而無需首先了解位深度、文件格式或色彩空間等。學(xué)習(xí)難度遠(yuǎn)遠(yuǎn)小于OpenCV,并且正如他們的標(biāo)語所說,“ 它使計(jì)算機(jī)視覺變得簡單 ”。支持SimpleCV的一些觀點(diǎn)是:
即使是初學(xué)者也可以編寫簡單的機(jī)器視覺測試
攝像機(jī)、視頻文件、圖像和視頻流都可以交互操作
使用說明文檔:https://simplecv.readthedocs.io/en/latest/
用法舉例
7. Mahotas
Mahotas是另一個(gè)用于Python的計(jì)算機(jī)視覺和圖像處理庫。 它包含傳統(tǒng)的圖像處理功能(如濾波和形態(tài)學(xué)操作)以及用于特征計(jì)算的更現(xiàn)代的計(jì)算機(jī)視覺功能(包括興趣點(diǎn)檢測和局部描述符)。 該接口使用Python,適用于快速開發(fā),但算法是用C ++實(shí)現(xiàn)的,并且針對(duì)速度進(jìn)行了優(yōu)化。Mahotas庫運(yùn)行很快,它的代碼很簡單,(對(duì)其它庫的)依賴性也很小。 建議閱讀他們的官方文檔以了解更多內(nèi)容。
使用說明文檔:
https://mahotas.readthedocs.io/en/latest/install.html
用法舉例
Mahotas庫使用簡單的代碼來完成工作。 對(duì)于“ 尋找Wally ”的問題,Mahotas完成的得很好,而且代碼量非常小。
8. SimpleITK
ITK(Insight Segmentation and Registration Toolkit)是一個(gè)開源的跨平臺(tái)系統(tǒng),為開發(fā)人員提供了一整套用于圖像分析的軟件工具。 其中, SimpleITK是一個(gè)建立在ITK之上的簡化層,旨在促進(jìn)其在快速原型設(shè)計(jì)、教育以及腳本語言中的使用。SimpleITK是一個(gè)包含大量組件的圖像分析工具包,支持一般的過濾操作、圖像分割和配準(zhǔn)。 SimpleITK本身是用C++編寫的,但可用于包括Python在內(nèi)的大量編程語言。
使用說明文檔:https://github.com/hhatto/pgmagick
這里有大量說明了如何使用SimpleITK進(jìn)行教育和研究活動(dòng)的Jupyter notebook。notebook中演示了如何使用SimpleITK進(jìn)行使用Python和R編程語言的交互式圖像分析。
用法舉例:
下面的動(dòng)畫是使用SimpleITK和Python創(chuàng)建的可視化的嚴(yán)格CT / MR配準(zhǔn)過程。
9. pgmagick
pgmagick是GraphicsMagick庫基于Python的包裝器。GraphicsMagick 圖像處理系統(tǒng)有時(shí)被稱為圖像處理的瑞士軍刀。它提供了強(qiáng)大而高效的工具和庫集合,支持超過88種主要格式圖像的讀取、寫入和操作,包括DPX,GIF,JPEG,JPEG-2000,PNG,PDF,PNM和TIFF等重要格式。
使用說明文檔:https://github.com/hhatto/pgmagick
用法舉例:圖片縮放、邊緣提取
圖片縮放
邊緣提取
10. Pycairo
Pycairo是圖形庫cairo的一組python綁定。 Cairo是一個(gè)用于繪制矢量圖形的2D圖形庫。 矢量圖形很有趣,因?yàn)樗鼈冊(cè)谡{(diào)整大小或進(jìn)行變換時(shí)不會(huì)降低清晰度。Pycairo庫可以從Python調(diào)用cairo命令。
使用說明文檔:https://github.com/pygobject/pycairo
用法:Pycairo可以繪制線條、基本形狀和徑向漸變
以上就是一些免費(fèi)的優(yōu)秀圖像處理Python庫。有些很知名,你可能已經(jīng)知道或者用過,有些可能對(duì)你來說還是新的。那正好現(xiàn)在就上手操作一下,試一試吧。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python實(shí)現(xiàn)判斷一個(gè)字符串是否包含子串的方法總結(jié)
這篇文章主要介紹了Python實(shí)現(xiàn)判斷一個(gè)字符串是否包含子串的方法,結(jié)合實(shí)例形式總結(jié)分析了四種比較常用的字符串子串判定方法,需要的朋友可以參考下2017-11-11Python中使用threading.Event協(xié)調(diào)線程的運(yùn)行詳解
這篇文章主要介紹了Python中使用threading.Event協(xié)調(diào)線程的運(yùn)行詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-05-05Python數(shù)據(jù)分析之?Matplotlib?3D圖詳情
本文主要介紹了Python數(shù)據(jù)分析之Matplotlib 3D圖詳情,Matplotlib提供了mpl_toolkits.mplot3d工具包來進(jìn)行3D圖表的繪制,下文總結(jié)了更多相關(guān)資料,需要的小伙伴可以參考一下2022-05-05python tkinter實(shí)現(xiàn)下載進(jìn)度條及抖音視頻去水印原理
這篇文章主要介紹了python tkinter實(shí)現(xiàn)下載進(jìn)度條及抖音視頻去水印原理,幫助大家更好的利用python,感興趣的朋友可以了解下2021-02-02Python調(diào)整matplotlib圖片大小的3種方法匯總
我們?cè)谑褂胢atplotlib作圖時(shí),會(huì)遇到圖片不清晰或者圖片大小不是我們想要的,這個(gè)時(shí)候就需要調(diào)整下,這篇文章主要給大家介紹了關(guān)于Python調(diào)整matplotlib圖片大小的3種方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08pytorch神經(jīng)網(wǎng)絡(luò)從零開始實(shí)現(xiàn)多層感知機(jī)
這篇文章主要為大家介紹了pytorch神經(jīng)網(wǎng)絡(luò)從零開始實(shí)現(xiàn)多層感知機(jī)的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-10-10