Opencv特徵提取

2021-10-24 16:11:32 字數 2494 閱讀 4128

最近復現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描述...