From 63ad15c2430685d91553f825cf2eb4adbf0fae05 Mon Sep 17 00:00:00 2001 From: MaximSmolskiy Date: Mon, 24 Feb 2025 19:26:48 +0300 Subject: [PATCH] Refactor ArucoDetector::ArucoDetectorImpl::filterTooCloseCandidates --- modules/objdetect/src/aruco/aruco_detector.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/modules/objdetect/src/aruco/aruco_detector.cpp b/modules/objdetect/src/aruco/aruco_detector.cpp index a1b04c8181..00688c35f5 100644 --- a/modules/objdetect/src/aruco/aruco_detector.cpp +++ b/modules/objdetect/src/aruco/aruco_detector.cpp @@ -687,7 +687,6 @@ struct ArucoDetector::ArucoDetectorImpl { vector > groupedCandidates; vector isSelectedContours(candidateTree.size(), true); - size_t countSelectedContours = 0ull; for (size_t i = 0ull; i < candidateTree.size(); i++) { for (size_t j = i + 1ull; j < candidateTree.size(); j++) { float minDist = getAverageDistance(candidateTree[i].corners, candidateTree[j].corners); @@ -720,7 +719,12 @@ struct ArucoDetector::ArucoDetectorImpl { } } } - countSelectedContours += isSelectedContours[i]; + // group of one candidate + if(isSelectedContours[i]) { + isSelectedContours[i] = false; + groupId[i] = (int)groupedCandidates.size(); + groupedCandidates.push_back({i}); + } } for (vector& grouped : groupedCandidates) { @@ -743,8 +747,8 @@ struct ArucoDetector::ArucoDetectorImpl { } } - vector selectedCandidates(countSelectedContours + groupedCandidates.size()); - countSelectedContours = 0ull; + vector selectedCandidates(groupedCandidates.size()); + size_t countSelectedContours = 0ull; for (size_t i = 0ull; i < candidateTree.size(); i++) { if (isSelectedContours[i]) { selectedCandidates[countSelectedContours] = std::move(candidateTree[i]);