二、特徵提取匹配
總結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的版本,...