diff --git a/modules/flann/include/opencv2/flann.hpp b/modules/flann/include/opencv2/flann.hpp index fec3d067c8..050b5f7f58 100644 --- a/modules/flann/include/opencv2/flann.hpp +++ b/modules/flann/include/opencv2/flann.hpp @@ -289,7 +289,7 @@ public: int veclen() const { return nnIndex->veclen(); } - int size() const { return nnIndex->size(); } + int size() const { return (int)nnIndex->size(); } ::cvflann::IndexParams getParameters() { return nnIndex->getParameters(); } @@ -297,6 +297,7 @@ public: private: ::cvflann::Index* nnIndex; + Mat _dataset; }; //! @cond IGNORED @@ -312,10 +313,11 @@ private: template GenericIndex::GenericIndex(const Mat& dataset, const ::cvflann::IndexParams& params, Distance distance) +: _dataset(dataset) { CV_Assert(dataset.type() == CvType::type()); CV_Assert(dataset.isContinuous()); - ::cvflann::Matrix m_dataset((ElementType*)dataset.ptr(0), dataset.rows, dataset.cols); + ::cvflann::Matrix m_dataset((ElementType*)_dataset.ptr(0), _dataset.rows, _dataset.cols); nnIndex = new ::cvflann::Index(m_dataset, params, distance); diff --git a/modules/flann/include/opencv2/flann/dist.h b/modules/flann/include/opencv2/flann/dist.h index 2bb4fc947a..0670122c16 100644 --- a/modules/flann/include/opencv2/flann/dist.h +++ b/modules/flann/include/opencv2/flann/dist.h @@ -114,7 +114,7 @@ struct L2_Simple ResultType result = ResultType(); ResultType diff; for(size_t i = 0; i < size; ++i ) { - diff = *a++ - *b++; + diff = (ResultType)(*a++ - *b++); result += diff*diff; } return result;