From fe56753ce8d6aec26fca455e94abf4c9bc95cf79 Mon Sep 17 00:00:00 2001 From: Zorcius Jiang <32161032+Zorcius@users.noreply.github.com> Date: Fri, 24 Nov 2023 16:56:59 +0800 Subject: [PATCH 1/4] fix bugs in checker_detector.cpp --- modules/mcc/src/checker_detector.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/modules/mcc/src/checker_detector.cpp b/modules/mcc/src/checker_detector.cpp index 2de276d87fc..d097a334c75 100644 --- a/modules/mcc/src/checker_detector.cpp +++ b/modules/mcc/src/checker_detector.cpp @@ -232,9 +232,12 @@ bool CCheckerDetectorImpl:: #endif for (Ptr checker : checkers) { - for (cv::Point2f &corner : checker->getBox()) + std::vector restore_box; + for (cv::Point2f &corner : checker->getBox()){ corner += static_cast(region.tl()); - + restore_box.emplace_back(corner); + } + checker->setBox(restore_box); { cv::AutoLock lock(mtx); m_checkers.push_back(checker); @@ -453,9 +456,12 @@ bool CCheckerDetectorImpl:: #endif for (Ptr checker : checkers) { - for (cv::Point2f &corner : checker->getBox()) - corner += static_cast(region.tl() + innerRegion.tl()); - + std::vector restore_box; + for (cv::Point2f &corner : checker->getBox()){ + corner += static_cast(region.tl()); + restore_box.emplace_back(corner); + } + checker->setBox(restore_box); { cv::AutoLock lock(mtx); m_checkers.push_back(checker); From 0fd2802c690728ffcde16a9b22acff2ee294222c Mon Sep 17 00:00:00 2001 From: Gursimar Singh Date: Fri, 24 Jan 2025 18:06:21 +0530 Subject: [PATCH 2/4] Updated logic for box drawing --- modules/mcc/src/checker_detector.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/mcc/src/checker_detector.cpp b/modules/mcc/src/checker_detector.cpp index d097a334c75..fa55eebeba7 100644 --- a/modules/mcc/src/checker_detector.cpp +++ b/modules/mcc/src/checker_detector.cpp @@ -458,7 +458,7 @@ bool CCheckerDetectorImpl:: { std::vector restore_box; for (cv::Point2f &corner : checker->getBox()){ - corner += static_cast(region.tl()); + corner += static_cast(region.tl() + innerRegion.tl()); restore_box.emplace_back(corner); } checker->setBox(restore_box); From 42ee43c2ac26ea07a9765a0186a6c339bde43287 Mon Sep 17 00:00:00 2001 From: Gursimar Singh Date: Wed, 29 Jan 2025 13:35:53 +0530 Subject: [PATCH 3/4] Updated to use fixed size vector --- modules/mcc/src/checker_detector.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/modules/mcc/src/checker_detector.cpp b/modules/mcc/src/checker_detector.cpp index fa55eebeba7..1a035712eda 100644 --- a/modules/mcc/src/checker_detector.cpp +++ b/modules/mcc/src/checker_detector.cpp @@ -232,10 +232,10 @@ bool CCheckerDetectorImpl:: #endif for (Ptr checker : checkers) { - std::vector restore_box; - for (cv::Point2f &corner : checker->getBox()){ - corner += static_cast(region.tl()); - restore_box.emplace_back(corner); + const std::vector& checkerBox = checker->getBox(); + std::vector restore_box(checkerBox.size()); + for (size_t i = 0; i < checkerBox.size(); ++i) { + restore_box[i] = checkerBox[i] + static_cast(region.tl()); } checker->setBox(restore_box); { @@ -456,10 +456,10 @@ bool CCheckerDetectorImpl:: #endif for (Ptr checker : checkers) { - std::vector restore_box; - for (cv::Point2f &corner : checker->getBox()){ - corner += static_cast(region.tl() + innerRegion.tl()); - restore_box.emplace_back(corner); + const std::vector& checkerBox = checker->getBox(); + std::vector restore_box(checkerBox.size()); + for (size_t i = 0; i < checkerBox.size(); ++i) { + restore_box[i] = checkerBox[i] + static_cast(region.tl() + innerRegion.tl()); } checker->setBox(restore_box); { From 11c97470b50dc5dcea4ce4b8582388e56b202233 Mon Sep 17 00:00:00 2001 From: Gursimar Singh Date: Wed, 29 Jan 2025 15:37:00 +0530 Subject: [PATCH 4/4] Refactoring --- modules/mcc/src/checker_detector.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/mcc/src/checker_detector.cpp b/modules/mcc/src/checker_detector.cpp index 1a035712eda..a7d624e15a6 100644 --- a/modules/mcc/src/checker_detector.cpp +++ b/modules/mcc/src/checker_detector.cpp @@ -234,8 +234,8 @@ bool CCheckerDetectorImpl:: { const std::vector& checkerBox = checker->getBox(); std::vector restore_box(checkerBox.size()); - for (size_t i = 0; i < checkerBox.size(); ++i) { - restore_box[i] = checkerBox[i] + static_cast(region.tl()); + for (size_t a = 0; a < checkerBox.size(); ++a) { + restore_box[a] = checkerBox[a] + static_cast(region.tl()); } checker->setBox(restore_box); { @@ -458,8 +458,8 @@ bool CCheckerDetectorImpl:: { const std::vector& checkerBox = checker->getBox(); std::vector restore_box(checkerBox.size()); - for (size_t i = 0; i < checkerBox.size(); ++i) { - restore_box[i] = checkerBox[i] + static_cast(region.tl() + innerRegion.tl()); + for (size_t a = 0; a < checkerBox.size(); ++a) { + restore_box[a] = checkerBox[a] + static_cast(region.tl() + innerRegion.tl()); } checker->setBox(restore_box); {