現在的問題是, 我有一堆資料是四維的, 但是查詢時只需要用到前三維, 那麼該怎麼做呢?
有兩種方法:
1) 用l2_3d
#include
#include
#include
using
namespace
std;
int main(int argc, char** argv)
; flann::matrix dataset(data, 4, 4);
flann::kdtreesingleindex< flann::l2_3d> index(dataset, flann::kdtreeindexparams(8));
index.buildindex();
float querydata[4] = ;
flann::matrix query(querydata, 1, 4);
flann::matrix matindices(new
int[1*3], 1, 3);//one query, return 3 nearest neighbors.
flann::matrix matdists(new
float[1*3], 1, 3);
const flann::searchparams searchparams(32, 0, false);
index.radiussearch(query, matindices, matdists, 12.1, searchparams);
for (int q = 0; q < 1; q++)
cout
<< "dist:"
<< matdists[q][r] << endl;}}
return
0;}
2) 用dataset 中 的stride 引數
#include
#include
#include
using
namespace
std;
int main(int argc, char** argv)
; flann::matrix dataset(data, 4, 3, 4 * sizeof(float));
flann::kdtreesingleindex< flann::l2> index(dataset, flann::kdtreeindexparams(8));
index.buildindex();
float querydata[4] = ;
flann::matrix query(querydata, 1, 3);
flann::matrix matindices(new
int[1*3], 1, 3);//one query, return 3 nearest neighbors.
flann::matrix matdists(new
float[1*3], 1, 3);
const flann::searchparams searchparams(32, 0, false);
index.radiussearch(query, matindices, matdists, 12.1, searchparams);
for (int q = 0; q < 1; q++)
cout
<< "dist:"
<< matdists[q][r] << endl;}}
return
0;}
兩種方法的區別, 第一種查詢資料的維數是4維, 第二種查詢資料的維數是3維. flann中關於indexParam的使用說明
今天研究了一下opencv中的flann庫,踩坑一下午,遇到問題 opencv error unsupported format or combination of formats type 5 在stackoverflow下也沒人解決,所以特意記錄下。在庫中使用index類,完成knn的查詢。其建...
關於C的printf不能直接輸出string型別
在程式輸出時心血來潮用了c版本的printf,結果就蛋疼了,一直輸出是亂碼,string s 中國 printf s s 輸出亂碼 果斷切換成c 版本的cout發現可以正常輸出。於是上網找答案,居然驚訝的發現printf輸出字串是針對char 的,換言之,printf只能輸出c語言中的內建資料,st...
關於Flex中的資料更新
現在才發現,利用flex做 開發是一件極其痛苦的事情。flex已經完全改變了傳統的 開發中的思路。flex用sharedobject取代了session,用state取代了超鏈。但是,不可否認,flex提供了十分豐富的元件庫,還有一些開源的元件可用。如果認真做下來,最後 效果還是很不錯的 說一下在f...