flann中關於indexParam的使用說明

2021-07-24 06:48:02 字數 1189 閱讀 1729

今天研究了一下opencv中的flann庫,踩坑一下午,遇到問題:opencv error: unsupported format or combination of formats (type=5)

在stackoverflow下也沒人解決,所以特意記錄下。

在庫中使用index類,完成knn的查詢。其建構函式為:

index(inputarray features, const indexparams& params, cvflann::flann_distance_t disttype=cvflann::flann_dist_l2);

其引數有一些特殊要求:

1.對於params的取值為 autotunedindexparams、linearindexparams、kdtreeindexparams時需要使用float型的features

2.當param為lshindexparams時,features是uchar的mat

原因是index的建構函式其實呼叫了其build方法:

void index::build(inputarray _data, const indexparams& params, flann_distance_t _disttype)

mat data = _data.getmat();

index = 0;

featuretype = data.type();

disttype = _disttype;

if ( algo == flann_index_lsh)

switch( disttype )

}從中可以看出,除flann_dist_hamming外,其餘資料型別都為float型

對於flann_dist_hamming其中:

if ( algo == flann_index_lsh)

{disttype = flann_dist_hamming;

switch( disttype )

{case flann_dist_hamming:

buildindex< hammingdistance >(index, data, params);

break;

hammingdistance的定義為:typedef ::cvflann::hamminghammingdistance;

因此,使用lshindexparams時,features的型別要為uchar。

flann中關於資料的stride

現在的問題是,我有一堆資料是四維的,但是查詢時只需要用到前三維,那麼該怎麼做呢?有兩種方法 1 用l2 3d include include include using namespace std int main int argc,char argv flann matrix dataset da...

python中關於Opencv中關於矩形的函式總結

最近處理影象,以前用的都是matlab,現在入手python比較慢,這幾天看到了很多命名和功能相似的函式,作個記錄總結一下 只是為了能夠看下函式知道它是做什麼的,因此不會對其用法說得面面俱到。看到乙個文章講得清晰詳實,分享一下 功能 計算輪廓內的面積 示例 輸入為乙個點集 contours 0 為前...

js中關於時間

1 獲取當前時間 var mydate new date mydate.getyear 獲取當前年份 2位 mydate.getfullyear 獲取完整的年份 4位,1970 mydate.getmonth 獲取當前月份 0 11,0代表1月 mydate.getdate 獲取當前日 1 31 m...