每個人都應該知道的十大OpenCV函數


作者|Lazar Gugleta
編譯|Flin
來源|towardsdatascience

計算機視覺和計算機圖形學現在非常流行,因為它們與人工智能有着廣泛的聯系,它們的主要共同點是使用同一個OpenCV庫,以便像人類一樣對數字圖像或視頻(CV)或生成圖像(CG)有高層次理解。

這就是為什么今天我們要看一看在計算機科學領域里,對於同樣的庫,有哪些函數是你最能從中受益的!

在討論OpenCV的強大功能之前,讓我們先看看計算機視覺、計算機圖形學和OpenCV的定義,以便更好地理解我們在這里所做的工作。

計算機視覺

計算機視覺是一個跨學科的領域,涉及如何使計算機獲得對數字圖像或視頻的高層次理解。從工程的角度來看,它試圖使人類視覺系統能夠完成的任務自動化,也就是說,它希望像人類一樣“看懂”世界。

計算機圖形學

計算機圖形學是計算機科學中的一個分支,它研究如何借助計算機生成圖像。如今,計算機圖形學是數字攝影、電影、視頻游戲、手機和計算機顯示等許多專業應用領域的核心技術。

OpenCV

OpenCV(Open Source Computer Vision Library)是一個開源的計算機視覺和機器學習軟件庫。OpenCV的建立是為了為計算機視覺應用提供一個通用的基礎設施,並加速機器感知在商業產品中的應用。

該圖書館提供處理和分析圖像內容的工具,包括識別數字照片中的對象(如人的臉和圖形、文本等)、跟蹤對象的運動、轉換圖像、應用機器學習方法以及識別各種圖像中的公共元素。

一旦我們解決了這個問題,我們可以從我個人選擇的十大函數開始。(使用Python編寫函數)

imread/imshow

這個函數必須放在首位,因為要用一張圖片開始你的項目,此函數是必不可少的。從函數名可以猜到,它加載了BGR(Blue-Green-Red)格式的圖像。

import cv2
import matplotlib.pyplot as plot
image = cv2.imread('data.png') #load image
plot.imshow(image) #show image

cvtColor

加載圖像后,還可以使用cvtColor中的不同標志將其轉換為不同的配色方案。

cv2.cvtColor(image,cv2.COLOR_BGR2RGB)

下面是cvtColor的一些其他標志:COLOR_BGR2GRAY、COLOR_BGR2HSV和COLOR_BGR2YUV等。

這是雙向的,例如,COLOR_YUV2BGR也是可能的。

resize

有時你只需要一個不同於原來大小的圖像,所以resize就是你需要的函數。

cv2.resize(image, dimension, interpolation = cv2.INTER_AREA)

它獲取原始圖像,並按尺寸創建一個新圖像。尺寸定義為:

dimension = (width, height)

插值是一種重采樣圖片的方法,在我的例子中,它使用基於INTER_AREA的區域間重采樣,還有更多類似的方法

  1. INTER_NEAREST: 最近鄰插值
  2. INTER_LINEAR: 雙線性插值
  3. INTER_CUBIC: 4×4像素鄰域上的雙三次插值
  4. INTER_LANCZOS4: 8×8鄰域上的Lanczos插值

split/merge

每張圖片有3個通道,如果我們想把它們分割成不同的圖片,我們可以使用分割函數來實現。

(channel_b, channel_g, channel_r) = cv2.split(img)

如果圖像是BGR格式,它會將每個通道分成你定義的三個變量。

如果你已經分割通道,但希望將它們合並到一起,你可以使用merge。

cv2.merge(channel_b, channel_g, channel_r)

vconcat / hconcat

使用vconcat()hconcat()垂直和水平連接(合並)圖像。

v表示垂直,h表示水平。

cv2.vconcat([image1, image2])
cv2.hconcat([image1, image2])

ones/zeros

如果要在三維圖像(矩陣)中都填充1或0(因為矩陣要求彩色圖像具有3個維度)。

size = 200, 200, 3
m = np.zeros(size, dtype=np.uint8)
n = np.ones(size, dtype=np.uint8)

作為一個附加函數,我想在這里添加一個東西,那就是轉置函數。

transpose

如果我們有一個要轉置的已定義矩陣mat,我們所要做的就是直接對mat使用這個函數:

import numpy as np  
mat = np.array([[1, 2, 3], [4, 5, 6]])  
mat_transpose = mat.transpose()
print(mat_tranpose)

得到輸出:

[[1 4]  
 [2 5]  
 [3 6]]
#original input
[[1, 2, 3]
 [4, 5, 6]]

下一個步驟

這主要是為初學者准備的,但是下節課我們將介紹OpenCV更高級的特性。

原文鏈接:https://towardsdatascience.com/top-10-opencv-functions-everyone-has-to-know-about-945f33de8f6f

歡迎關注磐創AI博客站:
http://panchuang.net/

sklearn機器學習中文官方文檔:
http://sklearn123.com/

歡迎關注磐創博客資源匯總站:
http://docs.panchuang.net/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM