From 54fc9dce0ba6cfb3c1588e180487c26bf5bbd7c9 Mon Sep 17 00:00:00 2001 From: Adrian Kretz Date: Tue, 23 Dec 2025 15:54:37 +0100 Subject: [PATCH] Guarantee temporary object lifetime extension --- modules/objdetect/src/aruco/charuco_detector.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/objdetect/src/aruco/charuco_detector.cpp b/modules/objdetect/src/aruco/charuco_detector.cpp index 37aca01b36..87cab866e0 100644 --- a/modules/objdetect/src/aruco/charuco_detector.cpp +++ b/modules/objdetect/src/aruco/charuco_detector.cpp @@ -316,8 +316,8 @@ struct CharucoDetector::CharucoDetectorImpl { CV_Assert((markerCorners.empty() && markerIds.empty() && !image.empty()) || (markerCorners.total() == markerIds.total())); vector> tmpMarkerCorners; vector tmpMarkerIds; - InputOutputArrayOfArrays _markerCorners = markerCorners.needed() ? markerCorners : tmpMarkerCorners; - InputOutputArray _markerIds = markerIds.needed() ? markerIds : tmpMarkerIds; + InputOutputArrayOfArrays _markerCorners = markerCorners.needed() ? markerCorners : _InputOutputArray(tmpMarkerCorners); + InputOutputArray _markerIds = markerIds.needed() ? markerIds : _InputOutputArray(tmpMarkerIds); if (markerCorners.empty() && markerIds.empty()) { vector > rejectedMarkers; @@ -341,8 +341,8 @@ struct CharucoDetector::CharucoDetectorImpl { InputOutputArrayOfArrays markerCorners, InputOutputArray markerIds) { vector> tmpMarkerCorners; vector tmpMarkerIds; - InputOutputArrayOfArrays _markerCorners = markerCorners.needed() ? markerCorners : tmpMarkerCorners; - InputOutputArray _markerIds = markerIds.needed() ? markerIds : tmpMarkerIds; + InputOutputArrayOfArrays _markerCorners = markerCorners.needed() ? markerCorners : _InputOutputArray(tmpMarkerCorners); + InputOutputArray _markerIds = markerIds.needed() ? markerIds : _InputOutputArray(tmpMarkerIds); detectBoard(image, charucoCorners, charucoIds, _markerCorners, _markerIds); if (charucoParameters.checkMarkers && checkBoard(_markerCorners, _markerIds, charucoCorners, charucoIds) == false) { CV_LOG_DEBUG(NULL, "ChArUco board is built incorrectly"); @@ -402,8 +402,8 @@ void CharucoDetector::detectDiamonds(InputArray image, OutputArrayOfArrays _diam vector> tmpMarkerCorners; vector tmpMarkerIds; - InputOutputArrayOfArrays _markerCorners = inMarkerCorners.needed() ? inMarkerCorners : tmpMarkerCorners; - InputOutputArray _markerIds = inMarkerIds.needed() ? inMarkerIds : tmpMarkerIds; + InputOutputArrayOfArrays _markerCorners = inMarkerCorners.needed() ? inMarkerCorners : _InputOutputArray(tmpMarkerCorners); + InputOutputArray _markerIds = inMarkerIds.needed() ? inMarkerIds : _InputOutputArray(tmpMarkerIds); if (_markerCorners.empty() && _markerIds.empty()) { charucoDetectorImpl->arucoDetector.detectMarkers(image, _markerCorners, _markerIds); }