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

現在計算機視覺和計算機圖形學非常流行,這是因爲它們與人工智能有着廣泛的聯繫,它們的主要共同點是使用OpenCV庫,以便像人類一樣對數字圖像或視頻(CV)或生成圖像(CG)有高層次理解。
這就是爲什麼今天我們要來看一看在計算機科學領域裏,對於同樣的庫,有哪些函數是你最能從中受益的!
每個cver都應該知道的十大OpenCV函數
在討論OpenCV的強大功能之前,讓我們先看看計算機視覺、計算機圖形學和OpenCV的定義,以便更好地理解我們在這裏所做的工作。
計算機視覺
計算機視覺是一個跨學科的領域,涉及如何使計算機獲得對數字圖像或視頻的高層次理解。從工程的角度來看,它試圖使人類視覺系統能夠完成任務的自動化,也就是說,它希望像人類一樣“看懂”世界。
計算機圖形學
計算機圖形學是計算機科學中的一個分支,它研究如何藉助計算機生成圖像。如今,計算機圖形學是數字攝影、電影、視頻遊戲、手機和計算機顯示等許多專業應用領域的核心技術。
OpenCV
OpenCV(Open Source Computer Vision Library)是一個開源的計算機視覺和機器學習軟件庫。OpenCV的建立是爲了爲計算機視覺應用提供一個通用的基礎設施,並加速機器感知在商業產品中的應用。
該庫提供了處理和分析圖像內容的工具,包括識別數字照片中的對象(如人的臉和圖形、文本等)、跟蹤對象的運動、轉換圖像、應用機器學習方法以及識別各種圖像中的公共元素。
好了,現在我們可以從我個人選擇的十大函數開始學習。(使用Python編寫函數)
每個cver都應該知道的十大OpenCV函數
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

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

cvtColor
加載圖像後,還可以使用cvtColor中的不同標誌將其轉換爲不同的配色方案。
cv2.cvtColor(image,cv2.COLOR_BGR2RGB)
下面是cvtColor的一些其他標誌:COLOR_BGR2GRAY、COLOR_BGR2HSV和COLOR_BGR2YUV等。
這是雙向的,例如,COLOR_YUV2BGR也是可能的。
每個cver都應該知道的十大OpenCV函數
resize
有時你只需要一個不同於原來大小的圖像,所以resize就是你需要的函數。
cv2.resize(image, dimension, interpolation = cv2.INTER_AREA)
它獲取原始圖像,並按尺寸創建一個新圖像。尺寸定義爲:
dimension = (width, height)
插值是一種重採樣圖片的方法,在我的例子中,它使用基於INTER_AREA的區域間重採樣,還有更多類似的方法
INTER_NEAREST: 最近鄰插值
INTER_LINEAR: 雙線性插值
INTER_CUBIC: 4×4像素鄰域上的雙三次插值
INTER_LANCZOS4: 8×8鄰域上的Lanczos插值














  • https://scc.ustc.edu.cn/zlsc/sugon/intel/ipp/ipp_manual/IPPI/ippi_appendices/ippi_appB_LanczosInterpolation.htm
    每個cver都應該知道的十大OpenCV函數
    split/merge
    每張圖片有3個通道,如果我們想把它們分割成不同的圖片,我們可以使用分割函數來實現。
    (channel_b, channel_g, channel_r) = cv2.split(img)
    如果圖像是BGR格式,它會將每個通道分成你定義的三個變量。
    如果你已經分割通道,但希望將它們合併到一起,你可以使用merge。
    cv2.merge(channel_b, channel_g, channel_r)
    每個cver都應該知道的十大OpenCV函數
    vconcat / hconcat
    使用vconcat(),hconcat()可以垂直和水平連接(合併)圖像。
    v表示垂直,h表示水平。
    cv2.vconcat([image1, image2])
    cv2.hconcat([image1, image2])
    每個cver都應該知道的十大OpenCV函數
    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]]

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章