From 6132943a39802f1279d5d70631ff81665bb49cae Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Fri, 9 Nov 2018 07:07:12 +0000 Subject: [PATCH] xfeatures2d: validate keypoints mask for SURF --- modules/xfeatures2d/src/surf.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/modules/xfeatures2d/src/surf.cpp b/modules/xfeatures2d/src/surf.cpp index 435380c53..c81a56b3c 100644 --- a/modules/xfeatures2d/src/surf.cpp +++ b/modules/xfeatures2d/src/surf.cpp @@ -944,6 +944,19 @@ void SURF_Impl::detectAndCompute(InputArray _img, InputArray _mask, integral(mask1, msum, CV_32S); } fastHessianDetector( sum, msum, keypoints, nOctaves, nOctaveLayers, (float)hessianThreshold ); + if (!mask.empty()) + { + for (size_t i = 0; i < keypoints.size(); ) + { + Point pt(keypoints[i].pt); + if (mask.at(pt.y, pt.x) == 0) + { + keypoints.erase(keypoints.begin() + i); + continue; // keep "i" + } + i++; + } + } } int i, j, N = (int)keypoints.size();