From 94a2e747abbcbebb924f7543437d1dff4f2406c2 Mon Sep 17 00:00:00 2001 From: Pavel Rojtberg Date: Mon, 28 Mar 2016 00:09:27 +0200 Subject: [PATCH] aruco::estimatePoseSingleMarkers rvec/ tvec memory layout fixes type should be OutputArray instead of OutputArrayOfArrays. at is one dimensional. (fixes debug assert) fixes #574 --- modules/aruco/include/opencv2/aruco.hpp | 6 +++--- modules/aruco/src/aruco.cpp | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/aruco/include/opencv2/aruco.hpp b/modules/aruco/include/opencv2/aruco.hpp index 3f45dc11f..d69e04e74 100644 --- a/modules/aruco/include/opencv2/aruco.hpp +++ b/modules/aruco/include/opencv2/aruco.hpp @@ -192,9 +192,9 @@ CV_EXPORTS_W void detectMarkers(InputArray image, Ptr &dictionary, O * \f$A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\f$ * @param distCoeffs vector of distortion coefficients * \f$(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6],[s_1, s_2, s_3, s_4]])\f$ of 4, 5, 8 or 12 elements - * @param rvecs array of output rotation vectors (@sa Rodrigues) (e.g. std::vector>). + * @param rvecs array of output rotation vectors (@sa Rodrigues) (e.g. std::vector). * Each element in rvecs corresponds to the specific marker in imgPoints. - * @param tvecs array of output translation vectors (e.g. std::vector>). + * @param tvecs array of output translation vectors (e.g. std::vector). * Each element in tvecs corresponds to the specific marker in imgPoints. * * This function receives the detected markers and returns their pose estimation respect to @@ -209,7 +209,7 @@ CV_EXPORTS_W void detectMarkers(InputArray image, Ptr &dictionary, O */ CV_EXPORTS_W void estimatePoseSingleMarkers(InputArrayOfArrays corners, float markerLength, InputArray cameraMatrix, InputArray distCoeffs, - OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs); + OutputArray rvecs, OutputArray tvecs); diff --git a/modules/aruco/src/aruco.cpp b/modules/aruco/src/aruco.cpp index b06dd5f71..bb98778a4 100644 --- a/modules/aruco/src/aruco.cpp +++ b/modules/aruco/src/aruco.cpp @@ -876,7 +876,7 @@ class SinglePoseEstimationParallel : public ParallelLoopBody { for(int i = begin; i < end; i++) { solvePnP(markerObjPoints, corners.getMat(i), cameraMatrix, distCoeffs, - rvecs.at(0, i), tvecs.at(0, i)); + rvecs.at(i), tvecs.at(i)); } } @@ -896,7 +896,7 @@ class SinglePoseEstimationParallel : public ParallelLoopBody { */ void estimatePoseSingleMarkers(InputArrayOfArrays _corners, float markerLength, InputArray _cameraMatrix, InputArray _distCoeffs, - OutputArrayOfArrays _rvecs, OutputArrayOfArrays _tvecs) { + OutputArray _rvecs, OutputArray _tvecs) { CV_Assert(markerLength > 0);