flann中關於資料的stride

2021-08-21 20:07:07 字數 1799 閱讀 5069

現在的問題是, 我有一堆資料是四維的, 但是查詢時只需要用到前三維, 那麼該怎麼做呢?

有兩種方法:

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...