Undo multi dict functionality of refineDetectedMarkers method

This commit is contained in:
Benjamin Knecht 2025-02-20 15:27:19 +01:00
parent 1f9d6aa6cf
commit 364eedb87e

View File

@ -1240,6 +1240,7 @@ void ArucoDetector::refineDetectedMarkers(InputArray _image, const Board& _board
InputOutputArrayOfArrays _rejectedCorners, InputArray _cameraMatrix, InputOutputArrayOfArrays _rejectedCorners, InputArray _cameraMatrix,
InputArray _distCoeffs, OutputArray _recoveredIdxs) const { InputArray _distCoeffs, OutputArray _recoveredIdxs) const {
DetectorParameters& detectorParams = arucoDetectorImpl->detectorParams; DetectorParameters& detectorParams = arucoDetectorImpl->detectorParams;
const Dictionary& dictionary = arucoDetectorImpl->dictionaries.at(0);
RefineParameters& refineParams = arucoDetectorImpl->refineParams; RefineParameters& refineParams = arucoDetectorImpl->refineParams;
CV_Assert(refineParams.minRepDistance > 0); CV_Assert(refineParams.minRepDistance > 0);
@ -1262,6 +1263,10 @@ void ArucoDetector::refineDetectedMarkers(InputArray _image, const Board& _board
// list of missing markers indicating if they have been assigned to a candidate // list of missing markers indicating if they have been assigned to a candidate
vector<bool > alreadyIdentified(_rejectedCorners.total(), false); vector<bool > alreadyIdentified(_rejectedCorners.total(), false);
// maximum bits that can be corrected
int maxCorrectionRecalculated =
int(double(dictionary.maxCorrectionBits) * refineParams.errorCorrectionRate);
Mat grey; Mat grey;
_convertToGrey(_image, grey); _convertToGrey(_image, grey);
@ -1277,11 +1282,6 @@ void ArucoDetector::refineDetectedMarkers(InputArray _image, const Board& _board
} }
vector<int> recoveredIdxs; // original indexes of accepted markers in _rejectedCorners vector<int> recoveredIdxs; // original indexes of accepted markers in _rejectedCorners
for (const auto& dictionary : arucoDetectorImpl->dictionaries) {
// maximum bits that can be corrected
int maxCorrectionRecalculated =
int(double(dictionary.maxCorrectionBits) * refineParams.errorCorrectionRate);
// for each missing marker, try to find a correspondence // for each missing marker, try to find a correspondence
for(unsigned int i = 0; i < undetectedMarkersIds.size(); i++) { for(unsigned int i = 0; i < undetectedMarkersIds.size(); i++) {
@ -1384,7 +1384,6 @@ void ArucoDetector::refineDetectedMarkers(InputArray _image, const Board& _board
recoveredIdxs.push_back(closestCandidateIdx); recoveredIdxs.push_back(closestCandidateIdx);
} }
} }
}
// parse output // parse output
if(finalAcceptedIds.size() != _detectedIds.total()) { if(finalAcceptedIds.size() != _detectedIds.total()) {