在特徵點檢測之後,需要描述特徵點位置、特徵等資訊,以便於後續匹配等工作的進行。
以下提供brisk和sift兩種演算法的特徵點描述演算法,opencv將演算法都封裝了,呼叫起來比較簡單;
注:sift演算法可能因為版權問題不能使用
#include
#include
#include
#include
#include
#include
#include
//sift所需標頭檔案
#include
//sift所需標頭檔案
using
namespace std;
void
desckeypoints1()
intmain()
注:主要的描述演算法及其原始碼
1、 cv::ptr<:descriptorextractor> descriptor = cv::brisk::
create()
; cv::mat descbrisk;
descriptor-
>
compute
(imggray, kptsbrisk, descbrisk)
;imggray:輸入的灰度影象&cv::mat
kptbrisk:輸入的特徵點&vector<:keypoint>
descbrisk:輸出的特徵點描述矩陣&cv::mat
#include
#include
#include
#include
#include
#include
#include
"structio.hpp"
using
namespace std;
void
matchdescriptors
(cv::mat &imgsource, cv::mat &imgref, vector<:keypoint>
&kptssource, vector<:keypoint>
&kptsref, cv::mat &descsource, cv::mat &descref,
vector<:dmatch>
&matches, string descriptortype, string matchertype, string selectortype)
else
if(matchertype.
compare
("mat_flann")==
0)matcher = cv::descriptormatcher::
create
(cv::descriptormatcher::flannbased)
;//快速最近鄰逼近搜尋函式
//... todo : implement flann matching
cout <<
"flann matching";}
// perform matching task
if(selectortype.
compare
("sel_nn")==
0)else
if(selectortype.
compare
("sel_knn")==
0)}// todo : filter matches using descriptor distance ratio test
}// visualize results
cv::mat matchimg = imgref.
clone()
; cv::
drawmatches
(imgsource, kptssource, imgref, kptsref, matches,
matchimg, cv::scalar::
all(-1
), cv::scalar::
all(-1
), vector<
char
>()
, cv::drawmatchesflags::draw_rich_keypoints)
; string windowname =
"matching keypoints between two camera images (best 50)"
; cv::
namedwindow
(windowname,7)
; cv::
imshow
(windowname, matchimg)
; cv::
waitkey(0);}
特徵描述匹配方法的總體架構
OpenCV學習問題記錄(一)
int nrows 480,ncols 640 cv mat m1 8u m1 8u.create nrows,ncols,cv 8uc1 此刻表示建立乙個480x640大小的畫素塊,每個畫素都是單通道每個通道的位數都是8位,乙個位元組的。上述cv 8uc1中的8表示8位 uc表示uchar型別 1...
opencv編譯相關問題記錄
在編譯opencv時,一般都是編譯成為動態庫,但是有時為了方便移植或者在其他地方安裝,會需要將其編譯成靜態庫的形式。這個時候只需要將cmake的 build shared libs 引數設為 off即可 可以採用如下命令來進行編譯 cmake d cmake build type release d...
ios 學習 問題 記錄
一 重新加入storyboard 黑屏並且提示以下錯誤 解決方案 1 在general編輯標籤中,deployment info 部分,main inte ce 彈出的標籤中選擇對應的storyboard 2 新增檢視控制器 在storyboard 的identity inspector 中選擇你需...