opencv3 4 10編譯及特徵提取匹配

2021-10-12 20:03:45 字數 2246 閱讀 9215

二、特徵提取匹配

總結opencv_contrib:

windows 10

visualstudio 2017

cmake 3.19

opencv核心庫原始碼

opencv contrib庫原始碼

1、直接使用vcpkg一鍵編譯最簡單。(vcpkg使用配置)

.\vcpkg.exe install opencv3[contrib]

:x86-windows

.\vcpkg.exe install opencv3[contrib]

:x64-windows

.\vcpkg.exe export opencv3[contrib]

:x86-windows opencv3[contrib]

:x64-windows --zip

已編譯版本:

特徵檢測提取演算法,其中 sift和surf都是需要使用nonfree module模組,即需要編譯上面的opencv contrib模組。

"fast" – fastfeaturedetector

"star" – starfeaturedetector

"sift" – sift (nonfree module)

"surf" – surf (nonfree module)

"orb" – orb

"brisk" – brisk

"mser" – mser

"gftt" – goodfeaturestotrackdetector

"harris" – goodfeaturestotrackdetector with harris detector enabled

"dense" – densefeaturedetector

"******blob" – ******blobdetector

harris:用於檢測角點

sift:用於檢測斑點

surf:用於檢測斑點

fast:用於檢測角點

brief:用於檢測斑點

orb:代表帶有方向的fast演算法與具有旋轉不變性的brief演算法

harris,fast都是用來檢測角點的

sift(中的dog),surf(中的hessian)是檢測斑點的(關鍵點區域)

brief也是檢測斑點的。

orb特徵是基於fast和brief演算法的,也是一種檢測特徵的演算法

暴力匹配法

flann的匹配法

orb特徵匹配、k近鄰特徵匹配都是用暴力匹配法作為匹配器(bfmatcher )的

暴力匹配法由bfmatcher物件實現暴力匹配:

bf = cv2.

bfmatcher

(cv2.norm_hamming,crosscheck = true)

matches = bf.

match

(des1,des2)

flann演算法由flannbasedmatcher實現:

flann = cv2.

flannbasedmatcher

(indexparams,searchparams)

matches = flann.

knnmatch

(des1,des2,k =

2)

暴力匹配多用於orb特徵的匹配中:

orb = cv2.

orb_create()

kp1,des1 = orb.

detectandcompute

(img1,none)

kp2,des2 = orb.

detectandcompute

(img2,none)

flann多用於sift特徵的匹配中:

sift = cv2.xfeatures2d.

sift_create()

kp1,des1 = sift.

detectandcompute

(queryimage,none)

kp2,des2 = sift.

detectandcompute

(trainingimage,none)

上述**非qt版本。

使用opencv進行影象識別檢測的大概流程,首先對兩張使用對應的檢測演算法,檢測出的特徵點,然後使用合適的特徵匹配演算法,判斷兩張待檢測的特徵點匹配情況。

opencv之輪廓特徵屬性及應用

1 最小外接矩形 輪廓最小外接矩形 minarearect rotatedrect minarearect inputarray points points 輸入的二維點集,可以填mat 型別或std vector 返回值 rotatedrect類矩形物件,外接旋轉矩形主要成員有center,siz...

opencv特徵檢測及匹配通用步驟及Code

當我們學習乙個新的知識的時候,往往我們第一點能夠想到的就是這個東西有什麼用,有沒有實際價值。如果學會了一樣本領,現實生活中卻用不到,這也是一種浪費,浪費的是時間精力。那麼,特徵檢測在視覺領域有哪些地方可以用到呢?如下 1 影象匹配 2 影象拼接 3 實時跟蹤 什麼是特徵檢測呢?所謂的特徵檢測直觀一些...

QT之編譯opencv及使用

三 使用用qt編譯opencv 四 qt中的opencv配置 五 error 一 為何要自己編譯?例如 在安裝目錄的build目錄下看到64位c 介面的庫只有vc11和vc12這兩個版本,而我目前使用的編譯器是microsoft visual c compiler 14.0,需要的是vc14的版本,...