From fce75cd8583fdd3726613808420ffd1f86fa869e Mon Sep 17 00:00:00 2001 From: Wenfeng CAI Date: Wed, 19 Sep 2018 12:27:07 +0800 Subject: [PATCH] Fix failure to request stddev of non-intrinsics Before this fix, the code would fail if only standard deviations of extrinsic parameters are requested. While standard deviations matrix should be computed if any set of standard deviations is requested. A variable is added to represent this case. --- modules/calib3d/src/calibration.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/calib3d/src/calibration.cpp b/modules/calib3d/src/calibration.cpp index 460914a741..3180dc8811 100644 --- a/modules/calib3d/src/calibration.cpp +++ b/modules/calib3d/src/calibration.cpp @@ -3426,7 +3426,8 @@ double cv::calibrateCamera(InputArrayOfArrays _objectPoints, tvecM = _tvecs.getMat(); } - if( stddev_needed || stddev_ext_needed ) + bool stddev_any_needed = stddev_needed || stddev_ext_needed; + if( stddev_any_needed ) { stdDeviationsM.create(nimages*6 + CV_CALIB_NINTRINSIC, 1, CV_64F); } @@ -3447,7 +3448,7 @@ double cv::calibrateCamera(InputArrayOfArrays _objectPoints, &c_cameraMatrix, &c_distCoeffs, rvecs_needed ? &c_rvecM : NULL, tvecs_needed ? &c_tvecM : NULL, - stddev_needed ? &c_stdDev : NULL, + stddev_any_needed ? &c_stdDev : NULL, errors_needed ? &c_errors : NULL, flags, cvTermCriteria(criteria)); if( stddev_needed )