我正在使用 opencv 2.4.4 flann。
我参考:http ://docs.opencv.org/2.4.4/modules/flann/doc/flann_fast_approximate_nearest_neighbor_search.html
做KNN。
我有一个矩阵(8000*32)flann_m。有 8000 个数据,每个数据有 32 个特征。
我写了这样的代码:
flann::Index flann_index(flann_m, flann::LinearIndexParams());
flann_index.save("flann_index.fln");
Mat resps(ROW,K,CV_32F);
Mat nresps(ROW,K,CV_16S);
Mat dist(ROW,K,CV_32F);
flann_index.knnSearch(flann_m,nresps,dist,K,flann::SearchParams(64));
我可以在 nreps 和 dist 中得到 KNN 结果,nresps 是 N 个邻居的索引,dist 是距离。
但我不知道如何在 opencv flann 中设置不同的距离算法(ChiSquare、Euclidean 等)。
我检查了 flann.cpp,似乎 set_distance() 函数已被弃用。