1
0
mirror of https://github.com/opencv/opencv.git synced 2026-07-29 23:33:05 +04:00

Refactor ArucoDetector::ArucoDetectorImpl::filterTooCloseCandidates

This commit is contained in:
MaximSmolskiy
2025-02-24 19:26:48 +03:00
parent b5f5540e8a
commit 63ad15c243
@@ -687,7 +687,6 @@ struct ArucoDetector::ArucoDetectorImpl {
vector<vector<size_t> > groupedCandidates;
vector<bool> 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<size_t>& grouped : groupedCandidates) {
@@ -743,8 +747,8 @@ struct ArucoDetector::ArucoDetectorImpl {
}
}
vector<MarkerCandidateTree> selectedCandidates(countSelectedContours + groupedCandidates.size());
countSelectedContours = 0ull;
vector<MarkerCandidateTree> 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]);