最近復現slam14講第7講關於orb的**,特徵提取的原理懂了,opencv裡的實現方式,特別是如何構造特徵點提取函式、描述子函式和暴力匹配等方法的函式不熟悉,因此翻到了《opencv程式設計入門》第三版了解了解,對整個流程有了個概念。我發現我的opencv版本不能構建fast的描述子,sift更是沒有了,sift好像被專利保護了吧。目前只能用orb了,其他的也暫時用不到,先不管了。
//關鍵點
featuredetector featuredector;
//還可以ptr構造智慧型指標型,比較安全,要指定特徵點型別
//ptrfeaturedector = orb::create();
vector keypoints1, ketpoints2;
featuredector.
detect
(image1,keypoints1)
;//描述子
mat descriptor1, descriptor2;
descriptorextractor extractor;
//智慧型指標構造
ptr extractor = orb::
create()
;extractor.
compute
(image1, keypoints1, descriptor1)
;//計算距離,通用的方法
ptr mathcer = descriptormatcher::
create(2
);/* flannbased = 1,
bruteforce = 2,
bruteforce_l1 = 3,
bruteforce_hamming = 4,
bruteforce_hamminglut = 5,
bruteforce_sl2 = 6
*///也可以用暴力匹配的名稱構造(僅限於bf)
//bfmathcer matcher;
vector matches;
matcher-
>
match
(descriptor1,descriptor2, matches)
;
int
main()
mat dstimage;
drawmatches
(src_image,keypoint1,captureimage,keypoint2,goodmatches,dstimage)
;imshow
("dstimage"
,dstimage)
; cout <<
"frame fs = "
<<
gettickfrequency()
/(cvgettickcount()
- time0)
<< endl;
}return0;
}
//初始化orb特徵點提取器,描述子、距離計算——bruteforce
ptr orb = orb::
create()
; vector keypoints1_, keypoints2_;
ptr extractor = orb::
create()
; vector matches;
orb-
>
detect
(image_1,keypoints1_)
; orb-
>
detect
(image_2,keypoints2_)
; mat descriptor1, descriptor2;
extractor-
>
compute
(image_1,keypoints1_,descriptor1)
; extractor-
>
compute
(image_2,keypoints2_,descriptor2)
;//暴力匹配
bfmatcher matcher;
matcher.
match
(descriptor1,descriptor2,matches)
;//找到最大、最小距離
double min_dst =
1000000.0
;double max_dst =
0.0;
for(
int i =
0; i < matches.
size()
;++i)
//篩除誤匹配特徵
vector goodmatches;
for(
int j =
0; j < matches.
size()
;++j)
opencv 特徵提取以及特徵匹配
用到的庫檔案 include include using namespace std opencv 特徵檢測模組 include include include 提取影象中的特徵 關鍵點 與 關鍵點的描述子,分別用到了opencv庫中的cv featuredetector和cv descriptor...
基於OpenCV的BOW特徵提取
在opencv中使用sift特徵提取運算元進行特徵提取是跟簡單的事情了,通過呼叫api也就下面幾行 的事情 cv siftfeaturedetector detector std vector keypoint detector.detect image,keypoint image是需要進行特徵提...
OpenCV的ORB特徵提取演算法
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!看到opencv2.3.1裡面orb特徵提取演算法也在裡面了,套用給的surf特徵例子程式改為orb特徵一直提示錯誤,型別不匹配神馬的,由於沒有找到示例程式,只能自己找答案。經過查詢發現 描述符資料型別有是float的,比如說sift,surf描述...