diff --git a/modules/features2d/src/descriptors.cpp b/modules/features2d/src/descriptors.cpp index a936787774..7b3cd4647c 100644 --- a/modules/features2d/src/descriptors.cpp +++ b/modules/features2d/src/descriptors.cpp @@ -549,15 +549,15 @@ void FernDescriptorMatch::trainFernClassifier() assert( params.filename.empty() ); vector points; - vector > refimgs( collection.images.size() ); + vector > refimgs; vector labels; for( size_t imageIdx = 0; imageIdx < collection.images.size(); imageIdx++ ) { - refimgs[imageIdx] = new Mat (collection.images[imageIdx]); for( size_t pointIdx = 0; pointIdx < collection.points[imageIdx].size(); pointIdx++ ) { + refimgs.push_back(new Mat (collection.images[imageIdx])); points.push_back(collection.points[imageIdx][pointIdx].pt); - labels.push_back(imageIdx); + labels.push_back(pointIdx); } } @@ -572,7 +572,7 @@ void FernDescriptorMatch::calcBestProbAndMatchIdx( const Mat& image, const Point { (*classifier)( image, pt, signature); - bestProb = 0; + bestProb = -FLT_MAX; bestMatchIdx = -1; for( size_t ci = 0; ci < (size_t)classifier->getClassCount(); ci++ ) { diff --git a/modules/features2d/src/planardetect.cpp b/modules/features2d/src/planardetect.cpp index 03e9d2398f..fc062be38b 100644 --- a/modules/features2d/src/planardetect.cpp +++ b/modules/features2d/src/planardetect.cpp @@ -853,7 +853,7 @@ void FernClassifier::train(const vector& points, for( i = 0; i < nsamples; i++ ) { Point2f pt = points[i]; - const Mat& src = labels.empty() ? *refimgs[i] : *refimgs[labels[i]]; + const Mat& src = *refimgs[i]; int classId = labels.empty() ? i : labels[i]; if( verbose && (i+1)*progressBarSize/nsamples != i*progressBarSize/nsamples ) putchar('.');