From 918244763d52a779fcc53dcd3a0abdad3eb5bdf0 Mon Sep 17 00:00:00 2001 From: Souriya Trinh Date: Tue, 10 Mar 2026 12:15:50 +0100 Subject: [PATCH] Create Charuco objects only if the selected pattern is a Charuco board. Otherwise it gives the following error: opencv/modules/objdetect/src/aruco/aruco_board.cpp:543: error: (-215:Assertion failed) size.width > 1 && size.height > 1 && markerLength > 0 && squareLength > markerLength in function 'CharucoBoard' --- samples/cpp/calibration.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/samples/cpp/calibration.cpp b/samples/cpp/calibration.cpp index ac80a06b59..d5df35d64a 100644 --- a/samples/cpp/calibration.cpp +++ b/samples/cpp/calibration.cpp @@ -540,9 +540,14 @@ int main( int argc, char** argv ) dictionary.readDictionary(fn); } - cv::aruco::CharucoBoard ch_board(boardSize, squareSize, markerSize, dictionary); + cv::Ptr ch_board; std::vector markerIds; - cv::aruco::CharucoDetector ch_detector(ch_board); + cv::Ptr ch_detector; + if (pattern == CHARUCOBOARD) { + ch_board = cv::makePtr(boardSize, squareSize, markerSize, dictionary); + ch_detector = cv::makePtr(cv::aruco::CharucoDetector(*ch_board)); + } + if( !inputFilename.empty() ) { @@ -563,7 +568,7 @@ int main( int argc, char** argv ) if( capture.isOpened() ) printf( "%s", liveCaptureHelp ); - namedWindow( "Image View", 1 ); + namedWindow( "Image View", cv::WINDOW_AUTOSIZE ); for(i = 0;;i++) { @@ -612,7 +617,7 @@ int main( int argc, char** argv ) break; case CHARUCOBOARD: { - ch_detector.detectBoard(view, pointbuf, markerIds); + ch_detector->detectBoard(view, pointbuf, markerIds); found = pointbuf.size() == (size_t)(boardSize.width-1)*(boardSize.height-1); break; }