Specifying correct parameter types for cv::flann::GenericIndex and cv::flann::Index_

This commit is contained in:
Marius Muja 2011-07-25 23:58:54 +00:00
parent 55e71a5cd7
commit b5cfe6be32

View File

@ -99,18 +99,18 @@ public:
typedef typename Distance::ElementType ElementType; typedef typename Distance::ElementType ElementType;
typedef typename Distance::ResultType DistanceType; typedef typename Distance::ResultType DistanceType;
GenericIndex(const Mat& features, const IndexParams& params, Distance distance = Distance()); GenericIndex(const Mat& features, const ::cvflann::IndexParams& params, Distance distance = Distance());
~GenericIndex(); ~GenericIndex();
void knnSearch(const vector<ElementType>& query, vector<int>& indices, void knnSearch(const vector<ElementType>& query, vector<int>& indices,
vector<DistanceType>& dists, int knn, const SearchParams& params); vector<DistanceType>& dists, int knn, const ::cvflann::SearchParams& params);
void knnSearch(const Mat& queries, Mat& indices, Mat& dists, int knn, const 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, int radiusSearch(const vector<ElementType>& query, vector<int>& indices,
vector<DistanceType>& dists, DistanceType radius, const SearchParams& params); vector<DistanceType>& dists, DistanceType radius, const ::cvflann::SearchParams& params);
int radiusSearch(const Mat& query, Mat& indices, Mat& dists, int radiusSearch(const Mat& query, Mat& indices, Mat& dists,
DistanceType radius, const SearchParams& params); DistanceType radius, const ::cvflann::SearchParams& params);
void save(std::string filename) { nnIndex->save(filename); } void save(std::string filename) { nnIndex->save(filename); }
@ -118,9 +118,9 @@ public:
int size() const { return nnIndex->size(); } int size() const { return nnIndex->size(); }
IndexParams getParameters() { return nnIndex->getParameters(); } ::cvflann::IndexParams getParameters() { return nnIndex->getParameters(); }
FLANN_DEPRECATED const IndexParams* getIndexParameters() { return nnIndex->getIndexParameters(); } FLANN_DEPRECATED const ::cvflann::IndexParams* getIndexParameters() { return nnIndex->getIndexParameters(); }
private: private:
::cvflann::Index<Distance>* nnIndex; ::cvflann::Index<Distance>* nnIndex;
@ -137,7 +137,7 @@ private:
template <typename Distance> template <typename Distance>
GenericIndex<Distance>::GenericIndex(const Mat& dataset, const IndexParams& params, Distance distance) GenericIndex<Distance>::GenericIndex(const Mat& dataset, const ::cvflann::IndexParams& params, Distance distance)
{ {
CV_Assert(dataset.type() == CvType<ElementType>::type()); CV_Assert(dataset.type() == CvType<ElementType>::type());
CV_Assert(dataset.isContinuous()); CV_Assert(dataset.isContinuous());
@ -157,7 +157,7 @@ GenericIndex<Distance>::~GenericIndex()
} }
template <typename Distance> template <typename Distance>
void GenericIndex<Distance>::knnSearch(const vector<ElementType>& query, vector<int>& indices, vector<DistanceType>& dists, int knn, const SearchParams& searchParams) void GenericIndex<Distance>::knnSearch(const vector<ElementType>& query, vector<int>& indices, vector<DistanceType>& dists, int knn, const ::cvflann::SearchParams& searchParams)
{ {
::cvflann::Matrix<ElementType> m_query((ElementType*)&query[0], 1, query.size()); ::cvflann::Matrix<ElementType> m_query((ElementType*)&query[0], 1, query.size());
::cvflann::Matrix<int> m_indices(&indices[0], 1, indices.size()); ::cvflann::Matrix<int> m_indices(&indices[0], 1, indices.size());
@ -170,7 +170,7 @@ void GenericIndex<Distance>::knnSearch(const vector<ElementType>& query, vector<
template <typename Distance> template <typename Distance>
void GenericIndex<Distance>::knnSearch(const Mat& queries, Mat& indices, Mat& dists, int knn, const SearchParams& searchParams) void GenericIndex<Distance>::knnSearch(const Mat& queries, Mat& indices, Mat& dists, int knn, const ::cvflann::SearchParams& searchParams)
{ {
CV_Assert(queries.type() == CvType<ElementType>::type()); CV_Assert(queries.type() == CvType<ElementType>::type());
CV_Assert(queries.isContinuous()); CV_Assert(queries.isContinuous());
@ -190,7 +190,7 @@ void GenericIndex<Distance>::knnSearch(const Mat& queries, Mat& indices, Mat& di
} }
template <typename Distance> template <typename Distance>
int GenericIndex<Distance>::radiusSearch(const vector<ElementType>& query, vector<int>& indices, vector<DistanceType>& dists, DistanceType radius, const SearchParams& searchParams) int GenericIndex<Distance>::radiusSearch(const vector<ElementType>& query, vector<int>& indices, vector<DistanceType>& dists, DistanceType radius, const ::cvflann::SearchParams& searchParams)
{ {
::cvflann::Matrix<ElementType> m_query((ElementType*)&query[0], 1, query.size()); ::cvflann::Matrix<ElementType> m_query((ElementType*)&query[0], 1, query.size());
::cvflann::Matrix<int> m_indices(&indices[0], 1, indices.size()); ::cvflann::Matrix<int> m_indices(&indices[0], 1, indices.size());
@ -202,7 +202,7 @@ int GenericIndex<Distance>::radiusSearch(const vector<ElementType>& query, vecto
} }
template <typename Distance> template <typename Distance>
int GenericIndex<Distance>::radiusSearch(const Mat& query, Mat& indices, Mat& dists, DistanceType radius, const SearchParams& searchParams) int GenericIndex<Distance>::radiusSearch(const Mat& query, Mat& indices, Mat& dists, DistanceType radius, const ::cvflann::SearchParams& searchParams)
{ {
CV_Assert(query.type() == CvType<ElementType>::type()); CV_Assert(query.type() == CvType<ElementType>::type());
CV_Assert(query.isContinuous()); CV_Assert(query.isContinuous());
@ -230,15 +230,15 @@ public:
typedef typename L2<T>::ElementType ElementType; typedef typename L2<T>::ElementType ElementType;
typedef typename L2<T>::ResultType DistanceType; typedef typename L2<T>::ResultType DistanceType;
Index_(const Mat& features, const IndexParams& params); Index_(const Mat& features, const ::cvflann::IndexParams& params);
~Index_(); ~Index_();
void knnSearch(const vector<ElementType>& query, vector<int>& indices, vector<DistanceType>& dists, int knn, const SearchParams& params); 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 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 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 SearchParams& params); int radiusSearch(const Mat& query, Mat& indices, Mat& dists, DistanceType radius, const ::cvflann::SearchParams& params);
void save(std::string filename) void save(std::string filename)
{ {
@ -258,14 +258,14 @@ public:
if (nnIndex_L2) return nnIndex_L2->size(); if (nnIndex_L2) return nnIndex_L2->size();
} }
IndexParams getParameters() ::cvflann::IndexParams getParameters()
{ {
if (nnIndex_L1) return nnIndex_L1->getParameters(); if (nnIndex_L1) return nnIndex_L1->getParameters();
if (nnIndex_L2) return nnIndex_L2->getParameters(); if (nnIndex_L2) return nnIndex_L2->getParameters();
} }
FLANN_DEPRECATED const IndexParams* getIndexParameters() FLANN_DEPRECATED const ::cvflann::IndexParams* getIndexParameters()
{ {
if (nnIndex_L1) return nnIndex_L1->getIndexParameters(); if (nnIndex_L1) return nnIndex_L1->getIndexParameters();
if (nnIndex_L2) return nnIndex_L2->getIndexParameters(); if (nnIndex_L2) return nnIndex_L2->getIndexParameters();
@ -279,7 +279,7 @@ private:
template <typename T> template <typename T>
Index_<T>::Index_(const Mat& dataset, const IndexParams& params) Index_<T>::Index_(const Mat& dataset, const ::cvflann::IndexParams& params)
{ {
printf("[WARNING] The cv::flann::Index_<T> class is deperecated, use cv::flann::GenericIndex<Distance> instead\n"); printf("[WARNING] The cv::flann::Index_<T> class is deperecated, use cv::flann::GenericIndex<Distance> instead\n");
@ -312,7 +312,7 @@ Index_<T>::~Index_()
} }
template <typename T> template <typename T>
void Index_<T>::knnSearch(const vector<ElementType>& query, vector<int>& indices, vector<DistanceType>& dists, int knn, const SearchParams& searchParams) void Index_<T>::knnSearch(const vector<ElementType>& query, vector<int>& indices, vector<DistanceType>& dists, int knn, const ::cvflann::SearchParams& searchParams)
{ {
::cvflann::Matrix<ElementType> m_query((ElementType*)&query[0], 1, query.size()); ::cvflann::Matrix<ElementType> m_query((ElementType*)&query[0], 1, query.size());
::cvflann::Matrix<int> m_indices(&indices[0], 1, indices.size()); ::cvflann::Matrix<int> m_indices(&indices[0], 1, indices.size());
@ -324,7 +324,7 @@ void Index_<T>::knnSearch(const vector<ElementType>& query, vector<int>& indices
template <typename T> template <typename T>
void Index_<T>::knnSearch(const Mat& queries, Mat& indices, Mat& dists, int knn, const SearchParams& searchParams) void Index_<T>::knnSearch(const Mat& queries, Mat& indices, Mat& dists, int knn, const ::cvflann::SearchParams& searchParams)
{ {
CV_Assert(queries.type() == CvType<ElementType>::type()); CV_Assert(queries.type() == CvType<ElementType>::type());
CV_Assert(queries.isContinuous()); CV_Assert(queries.isContinuous());
@ -343,7 +343,7 @@ void Index_<T>::knnSearch(const Mat& queries, Mat& indices, Mat& dists, int knn,
} }
template <typename T> template <typename T>
int Index_<T>::radiusSearch(const vector<ElementType>& query, vector<int>& indices, vector<DistanceType>& dists, DistanceType radius, const SearchParams& searchParams) int Index_<T>::radiusSearch(const vector<ElementType>& query, vector<int>& indices, vector<DistanceType>& dists, DistanceType radius, const ::cvflann::SearchParams& searchParams)
{ {
::cvflann::Matrix<ElementType> m_query((ElementType*)&query[0], 1, query.size()); ::cvflann::Matrix<ElementType> m_query((ElementType*)&query[0], 1, query.size());
::cvflann::Matrix<int> m_indices(&indices[0], 1, indices.size()); ::cvflann::Matrix<int> m_indices(&indices[0], 1, indices.size());
@ -354,7 +354,7 @@ int Index_<T>::radiusSearch(const vector<ElementType>& query, vector<int>& indic
} }
template <typename T> template <typename T>
int Index_<T>::radiusSearch(const Mat& query, Mat& indices, Mat& dists, DistanceType radius, const SearchParams& searchParams) int Index_<T>::radiusSearch(const Mat& query, Mat& indices, Mat& dists, DistanceType radius, const ::cvflann::SearchParams& searchParams)
{ {
CV_Assert(query.type() == CvType<ElementType>::type()); CV_Assert(query.type() == CvType<ElementType>::type());
CV_Assert(query.isContinuous()); CV_Assert(query.isContinuous());
@ -374,7 +374,7 @@ int Index_<T>::radiusSearch(const Mat& query, Mat& indices, Mat& dists, Distance
template <typename Distance> template <typename Distance>
int hierarchicalClustering(const Mat& features, Mat& centers, const KMeansIndexParams& params, int hierarchicalClustering(const Mat& features, Mat& centers, const ::cvflann::IndexParams& params,
Distance d = Distance()) Distance d = Distance())
{ {
typedef typename Distance::ElementType ElementType; typedef typename Distance::ElementType ElementType;
@ -393,7 +393,7 @@ int hierarchicalClustering(const Mat& features, Mat& centers, const KMeansIndexP
template <typename ELEM_TYPE, typename DIST_TYPE> template <typename ELEM_TYPE, typename DIST_TYPE>
FLANN_DEPRECATED int hierarchicalClustering(const Mat& features, Mat& centers, const KMeansIndexParams& params) FLANN_DEPRECATED int hierarchicalClustering(const Mat& features, Mat& centers, const ::cvflann::IndexParams& params)
{ {
printf("[WARNING] cv::flann::hierarchicalClustering<ELEM_TYPE,DIST_TYPE> is deprecated, use " printf("[WARNING] cv::flann::hierarchicalClustering<ELEM_TYPE,DIST_TYPE> is deprecated, use "
"cv::flann::hierarchicalClustering<Distance> instead\n"); "cv::flann::hierarchicalClustering<Distance> instead\n");