From 0ce545c40901cd05a972c90b22580d535f7613d5 Mon Sep 17 00:00:00 2001 From: Daniel Thornton Date: Mon, 14 Oct 2024 10:53:06 -0700 Subject: [PATCH] Fix bug in Micro QR pose estimation Summary: Fix order of finder pattern corners when passed to the pose estimation. Reviewed By: enpe Differential Revision: D64263377 Privacy Context Container: L1191897 fbshipit-source-id: bd2fa636fa7f3f7082117c5e921d0f0e68da28ba --- impl/ocean/cv/detector/qrcodes/MicroQRCodeDetector.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/impl/ocean/cv/detector/qrcodes/MicroQRCodeDetector.cpp b/impl/ocean/cv/detector/qrcodes/MicroQRCodeDetector.cpp index 17ca5b524..9b6650615 100644 --- a/impl/ocean/cv/detector/qrcodes/MicroQRCodeDetector.cpp +++ b/impl/ocean/cv/detector/qrcodes/MicroQRCodeDetector.cpp @@ -205,8 +205,11 @@ bool MicroQRCodeDetector::computePosesAndProvisionalVersions(const AnyCamera& an Vectors2 imagePoints; imagePoints.reserve(numPoints); - imagePoints.push_back(finderPattern.position()); - imagePoints.insert(imagePoints.end(), finderPattern.corners(), finderPattern.corners() + 4u); + imagePoints.emplace_back(finderPattern.position()); + for (unsigned int i = 0u; i < 4u; i++) + { + imagePoints.emplace_back(finderPattern.corners()[(corner + i) % 4u]); + } imagePoints.insert(imagePoints.end(), horizontalTimingCenters.begin(), horizontalTimingCenters.begin() + numHorizontalTimingModules); imagePoints.insert(imagePoints.end(), verticalTimingCenters.begin(), verticalTimingCenters.begin() + numVerticalTimingModules);