一、OpenCV
OpenCV是最著名和應(yīng)用最廣泛的開源庫之一,用于圖像處理、目標(biāo)檢測、人臉檢測、圖像分割、人臉識(shí)別等計(jì)算機(jī)視覺任務(wù)。除此之外,它還可以用于機(jī)器學(xué)習(xí)任務(wù)。
這是英特爾在2002年開發(fā)的。它是用C++編寫的,但是開發(fā)人員已經(jīng)提供了Python和java綁定。它易于閱讀和使用。
為了建立計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)模型,OpenCV有超過2500種算法。這些算法對于執(zhí)行各種任務(wù)非常有用,例如人臉識(shí)別、目標(biāo)檢測等。讓我們看一些可以使用OpenCV執(zhí)行的示例:
![](/d/20211017/dbf41ccc3fe55b9e97b36bd86550b063.gif)
灰度縮放
灰度縮放是一種將3通道圖像(如RGB、HSV等)轉(zhuǎn)換為單通道圖像(即灰度)的方法。最終的圖像在全白和全黑之間變化?;叶瓤s放的重要性包括降維(將3通道圖像轉(zhuǎn)換為單通道圖像)、降低模型復(fù)雜度等。
下面的代碼片段顯示了OpenCV中的灰度縮放
import cv2 as cv
img = cv.imread('example.jpg')
cv.imshow('Original', img)
cv.waitKey()
#Use cvtColor, to convert to grayscale
gray_img = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
cv.imshow('Grayscale', gray_img)
cv.waitKey(0)
![](/d/20211017/550cbce176170537c0bbe615b04cff3c.gif)
旋轉(zhuǎn)圖像
OpenCV有助于使用從0到360度的任意角度旋轉(zhuǎn)圖像。
檢查以下代碼以將圖像旋轉(zhuǎn)180度。
import cv2 as cv
import matplotlib.pyplot as plt
img = cv.imread('example.jpg')
h, w = image.shape[:2]
rot_matrix = cv.getRotationMatrix2D((w/2,h/2), -180, 0.5)
rot_image = cv.warpAffine(img, rot_matrix, (w, h))
plt.imshow(cv.cvtColor(rot_image, cv.COLOR_BGR2RGB))
![](/d/20211017/866dc93d2367bf017e34b9951d59df15.gif)
OpenCV還提供了除我們到目前為止討論的功能之外的其他功能。除此之外,它還有助于人臉檢測、圖像分割、特征提取、目標(biāo)檢測、三維重建等。
有關(guān)更多信息,請查看官方文檔:https://opencv.org/
二、Scikit-Image
Scikit Image是另一個(gè)偉大的開源圖像處理庫。它幾乎適用于任何計(jì)算機(jī)視覺任務(wù)。它是最簡單、最直接的庫之一。這個(gè)庫的某些部分是用Cython編寫的(它是python編程語言的超集,旨在使python比C語言更快)。
它提供了大量的算法,包括分割、顏色空間操作、幾何變換、濾波、形態(tài)學(xué)、特征檢測等。
Scikit Image使用Numpy數(shù)組作為圖像對象。讓我們看看如何在scikit圖像中執(zhí)行活動(dòng)輪廓操作。活動(dòng)輪廓描述圖像中形狀的邊界。
![](/d/20211017/ead593dfee70a4f7c3c1cf9f5af982a7.gif)
檢查以下活動(dòng)輪廓操作代碼:
import numpy as np
import matplotlib.pyplot as plt
from skimage.color import rgb2gray
from skimage import data
from skimage.filters import gaussian
from skimage.segmentation import active_contour
image = data.astronaut()
# Data for circular boundary
s = np.linspace(0, 2*np.pi, 400)
x = 220 + 100*np.cos(s)
y = 100 + 100*np.sin(s)
init = np.array([x, y]).T
# formation of the active contour
centre = active_contour(gaussian(image, 3),init, alpha=0.015, beta=10, gamma=0.001)
figure, axis = plt.subplots(1, 2, figsize=(7, 7))
ax[0].imshow(image, cmap=plt.cm.gray)
ax[0].set_title("Original Image")
ax[1].imshow(image, cmap=plt.cm.gray)
![](/d/20211017/2991f5dae1ad53793b48ccca59b61674.gif)
有關(guān)更多信息,請查看官方文檔:https://scikit-image.org/docs/stable/auto_examples/
三、Scipy
SciPy主要用于數(shù)學(xué)和科學(xué)計(jì)算,但有時(shí)也可以使用子模塊SciPy.ndimage用于基本的圖像操作和處理任務(wù)。
歸根結(jié)底,圖像只是多維數(shù)組,SciPy提供了一組用于操作n維Numpy操作的函數(shù)。SciPy提供了一些基本的圖像處理操作,如人臉檢測、卷積、圖像分割、讀取圖像、特征提取等。
除此之外,還可以執(zhí)行過濾,在圖像上繪制輪廓線。
![](/d/20211017/ec1c1de4815accdd2d4031be3d0d9ce8.gif)
請檢查以下代碼以使用SciPy模糊圖像:
from scipy import ndimage, misc
from matplotlib import pyplot as plt
f = misc.face()
b_face = ndimage.gaussian_filter(f, sigma=3)
figure, axis = plt.subplots(1, 2, figsize=(16, 8))
![](/d/20211017/2771850321a4ebd6293a90832e086756.gif)
有關(guān)更多信息,請查看官方文檔:https://docs.scipy.org/doc/scipy/reference/ndimage.html
四、Python Image Library (Pillow/PIL)
它是一個(gè)用于圖像處理任務(wù)的開放源碼python庫。它提供了其他庫通常不提供的特殊功能,如過濾、打開、操作和保存圖像。這個(gè)庫支持多種文件格式,這使它更高效。PIL還支持圖像處理、圖像顯示和圖像存檔等功能。讓我們看看使用Pillow/PIL的圖像增強(qiáng)。
![](/d/20211017/6b6cb4d204bfce07194bffe076c2a669.gif)
更改圖像的清晰度:
![](/d/20211017/c009cec9f00ea3939cd9a8c0a9c16676.gif)
有關(guān)更多信息,請查看官方文檔:https://pillow.readthedocs.io/en/stable/index.html
五、Matplotlib
Matplotlib主要用于二維可視化,如散點(diǎn)圖、條形圖、直方圖等,但我們也可以將其用于圖像處理。從圖像中提取信息是有效的。它不支持所有的文件格式。
![](/d/20211017/fb9e33f5f5684fdf17f48d6d0c8c9d2e.gif)
背景顏色更改操作后,請檢查以下圖像:
![](/d/20211017/c74203662a3aaf0cd2e9c41c01923ec9.gif)
有關(guān)更多信息,請查看官方文檔:https://matplotlib.org/stable/tutorials/introductory/images.html
六、SimpleITK
它也稱為圖像分割和注冊工具包。它是一個(gè)用于圖像注冊和圖像分割的開源庫。像OpenCV這樣的庫將圖像視為一個(gè)數(shù)組,但是這個(gè)庫將圖像視為空間中某個(gè)區(qū)域上的一組點(diǎn)。檢查以下示例:
![](/d/20211017/47a2359e4e4b240f75776c4f97fc6491.gif)
圖像分割
有關(guān)更多信息,請查看官方文檔:https://itk.org/
七、Numpy
它是一個(gè)用于數(shù)值分析的開放源碼python庫。它包含一個(gè)矩陣和多維數(shù)組作為數(shù)據(jù)結(jié)構(gòu)。但是NumPy也可以用于圖像處理任務(wù),例如圖像裁剪、操作像素和像素值的蒙版。
![](/d/20211017/4c45f4241353454e1e82a3fba09501e6.gif)
檢查下圖以從圖像中提取綠色/紅色/藍(lán)色通道:
![](/d/20211017/9ec9e086beaf07329f525be42e1fc125.gif)
有關(guān)更多信息,請查看官方文檔:https://scikit-image.org/docs/dev/user_guide/numpy_images.html
八、Mahotas
它是另一個(gè)用于計(jì)算機(jī)視覺和圖像處理的開放源碼python庫。它是為生物信息學(xué)而設(shè)計(jì)的。它提供了很多算法,這些算法是用C++編寫的,速度很快,使用了一個(gè)好的Python接口。它以NumPy數(shù)組讀取和寫入圖像。
使用Mahotas檢查下面的模板匹配圖像:
![](/d/20211017/ebd297e7208fc7dd14afb38927c2f43a.gif)
有關(guān)更多信息,請查看官方文檔:https://mahotas.readthedocs.io/en/latest/#
到此這篇關(guān)于2021年用于圖像處理的Python庫總結(jié)的文章就介紹到這了,更多相關(guān)Python圖像處理常用庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- python圖像處理基本操作總結(jié)(PIL庫、Matplotlib及Numpy)
- Python圖像處理之圖像拼接
- python數(shù)字圖像處理之估計(jì)噪聲參數(shù)
- Python圖像處理之膨脹與腐蝕的操作
- python opencv圖像處理(素描、懷舊、光照、流年、濾鏡 原理及實(shí)現(xiàn))
- 基于python的opencv圖像處理實(shí)現(xiàn)對斑馬線的檢測示例
- Python圖像處理之圖片拼接和堆疊案例教程