From 915e39cdf03c052c8663502f7a935ed87a91545a Mon Sep 17 00:00:00 2001 From: Vincent Rabaud Date: Fri, 15 Dec 2023 14:48:14 +0100 Subject: [PATCH] Empty vectors before filling them in ChessBoardDetector::processQuads It seems the port in https://github.com/opencv/opencv/pull/11703 lost the initialization. --- modules/calib3d/src/calibinit.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/calib3d/src/calibinit.cpp b/modules/calib3d/src/calibinit.cpp index 9693eaf0d4..de956abe36 100644 --- a/modules/calib3d/src/calibinit.cpp +++ b/modules/calib3d/src/calibinit.cpp @@ -241,7 +241,7 @@ public: void findConnectedQuads(std::vector& out_group, int group_idx); - int checkQuadGroup(std::vector& quad_group, std::vector& out_corners); + int checkQuadGroup(const std::vector& quad_group, std::vector& out_corners); int cleanFoundConnectedQuads(std::vector& quad_group); @@ -1322,7 +1322,7 @@ void ChessBoardDetector::findConnectedQuads(std::vector& out_gr } -int ChessBoardDetector::checkQuadGroup(std::vector& quad_group, std::vector& out_corners) +int ChessBoardDetector::checkQuadGroup(const std::vector& quad_group, std::vector& out_corners) { const int ROW1 = 1000000; const int ROW2 = 2000000; @@ -1420,6 +1420,7 @@ int ChessBoardDetector::checkQuadGroup(std::vector& quad_group, ChessBoardCorner* cur = first; ChessBoardCorner* right = NULL; ChessBoardCorner* below = NULL; + out_corners.clear(); out_corners.push_back(cur); for (int k = 0; k < 4; ++k) @@ -1937,6 +1938,7 @@ bool ChessBoardDetector::processQuads(std::vector& out_corners, int if (count > 0 || (-count > (int)out_corners.size())) { // copy corners to output array + out_corners.clear(); out_corners.reserve(n); for (int i = 0; i < n; ++i) out_corners.push_back(corner_group[i]->pt);