1
由於Index_
是flann庫中不推薦使用的類,因此我試圖使用GenericIndex
類,這是一個模板類。我不知道如何爲這個類創建一個對象。如何在opencv中使用GenericIndex類
在flann.hpp類定義爲如下:
template <typename Distance>
class GenericIndex
{
public:
typedef typename Distance::ElementType ElementType;
typedef typename Distance::ResultType DistanceType;
GenericIndex(const Mat& features, const ::cvflann::IndexParams& params, Distance distance = Distance());
~GenericIndex();
void knnSearch(const vector<ElementType>& query, vector<int>& indices,
vector<DistanceType>& dists, int knn, const ::cvflann::SearchParams& params);
void knnSearch(const Mat& queries, Mat& indices, Mat& dists, int knn, const ::cvflann::SearchParams& params);
int radiusSearch(const vector<ElementType>& query, vector<int>& indices,
vector<DistanceType>& dists, DistanceType radius, const ::cvflann::SearchParams& params);
int radiusSearch(const Mat& query, Mat& indices, Mat& dists,
DistanceType radius, const ::cvflann::SearchParams& params);
void save(std::string filename) { nnIndex->save(filename); }
int veclen() const { return nnIndex->veclen(); }
int size() const { return nnIndex->size(); }
::cvflann::IndexParams getParameters() { return nnIndex->getParameters(); }
FLANN_DEPRECATED const ::cvflann::IndexParams* getIndexParameters() { return nnIndex->getIndexParameters(); }
private:
::cvflann::Index<Distance>* nnIndex;
};
嗨,你能給我一些關於如何構建'cv :: flann :: GenericIndex'的指導,我發現opencv doc很難理解。非常感謝你。 'cv :: flann :: GenericIndex> index(feature,params,Distance)',我知道特徵是cv :: Mat,但我對如何構造參數和距離感到困惑。真的需要一些幫助。 –
ted930511
正如[here]所述(https://docs.opencv.org/trunk/db/d18/classcv_1_1flann_1_1GenericIndex.html#a8fff14185f9f3d2f2311b528f65b146c),對於'params'參數,您必須創建一個'IndexParams'子類的實例,例如'KDTreeIndexParams','CompositeIndexParams'等。不同的參數子類將產生具有不同搜索策略的索引。 'distance'參數可以省略,因爲它被賦予一個默認值。 – xperroni