From de8a6e091303ed2a3f2fc742840a81518375e66d 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/3] 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..ef91ba699ed 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()) + std::vector restore_box; + for (cv::Point2f &corner : checker->getBox()){ corner += static_cast(region.tl() + innerRegion.tl()); - + restore_box.emplace_back(corner); + } + checker->setBox(restore_box); { cv::AutoLock lock(mtx); m_checkers.push_back(checker); @@ -1363,4 +1369,4 @@ float CCheckerDetectorImpl:: } } // namespace mcc -} // namespace cv +} // namespace cv \ No newline at end of file From ee911cd849c528d35518d15cc024f88ff86d654c Mon Sep 17 00:00:00 2001 From: Gursimar Singh Date: Wed, 29 Jan 2025 13:39:41 +0530 Subject: [PATCH 2/3] 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 ef91ba699ed..611f9ea36fe 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 3e2010498686fabb022d01c1c2eb0a430208ce28 Mon Sep 17 00:00:00 2001 From: Gursimar Singh Date: Wed, 29 Jan 2025 15:35:48 +0530 Subject: [PATCH 3/3] 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 611f9ea36fe..7dd5cca317b 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); {