From ef7833a271e5c1277d9c165dc43edfe8ecfad9a6 Mon Sep 17 00:00:00 2001 From: Vladislav Sovrasov Date: Fri, 25 Aug 2017 13:05:16 +0300 Subject: [PATCH 1/2] calib3d: add CALIB_FIX_TANGENT_DIST flag to stereoCalibrate --- modules/calib3d/include/opencv2/calib3d/calib3d_c.h | 1 + modules/calib3d/src/calibration.cpp | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/calib3d/include/opencv2/calib3d/calib3d_c.h b/modules/calib3d/include/opencv2/calib3d/calib3d_c.h index 1069b5845e..8ec6390d70 100644 --- a/modules/calib3d/include/opencv2/calib3d/calib3d_c.h +++ b/modules/calib3d/include/opencv2/calib3d/calib3d_c.h @@ -245,6 +245,7 @@ CVAPI(void) cvDrawChessboardCorners( CvArr* image, CvSize pattern_size, #define CV_CALIB_FIX_S1_S2_S3_S4 65536 #define CV_CALIB_TILTED_MODEL 262144 #define CV_CALIB_FIX_TAUX_TAUY 524288 +#define CV_CALIB_FIX_TANGENT_DIST 2097152 #define CV_CALIB_NINTRINSIC 18 diff --git a/modules/calib3d/src/calibration.cpp b/modules/calib3d/src/calibration.cpp index c71eb93c9e..4fdb0978bf 100644 --- a/modules/calib3d/src/calibration.cpp +++ b/modules/calib3d/src/calibration.cpp @@ -1826,7 +1826,7 @@ double cvStereoCalibrate( const CvMat* _objectPoints, const CvMat* _imagePoints1 cvConvert( cameraMatrix, &K[k] ); if( flags & (CALIB_FIX_INTRINSIC|CALIB_USE_INTRINSIC_GUESS| - CALIB_FIX_K1|CALIB_FIX_K2|CALIB_FIX_K3|CALIB_FIX_K4|CALIB_FIX_K5|CALIB_FIX_K6) ) + CALIB_FIX_K1|CALIB_FIX_K2|CALIB_FIX_K3|CALIB_FIX_K4|CALIB_FIX_K5|CALIB_FIX_K6|CALIB_FIX_TANGENT_DIST) ) { CvMat tdist = cvMat( distCoeffs->rows, distCoeffs->cols, CV_MAKETYPE(CV_64F,CV_MAT_CN(distCoeffs->type)), Dist[k].data.db ); @@ -1888,7 +1888,7 @@ double cvStereoCalibrate( const CvMat* _objectPoints, const CvMat* _imagePoints1 imask[0] = imask[1] = imask[NINTRINSIC] = imask[NINTRINSIC+1] = 0; if( flags & CALIB_FIX_PRINCIPAL_POINT ) imask[2] = imask[3] = imask[NINTRINSIC+2] = imask[NINTRINSIC+3] = 0; - if( flags & CALIB_ZERO_TANGENT_DIST ) + if( flags & (CALIB_ZERO_TANGENT_DIST|CALIB_FIX_TANGENT_DIST) ) imask[6] = imask[7] = imask[NINTRINSIC+6] = imask[NINTRINSIC+7] = 0; if( flags & CALIB_FIX_K1 ) imask[4] = imask[NINTRINSIC+4] = 0; From e0ff5106d346b99026a7e61740a8353d25f30acd Mon Sep 17 00:00:00 2001 From: Vladislav Sovrasov Date: Fri, 25 Aug 2017 13:51:43 +0300 Subject: [PATCH 2/2] calib3d: fix warning from gcc7 --- modules/calib3d/src/solvepnp.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/calib3d/src/solvepnp.cpp b/modules/calib3d/src/solvepnp.cpp index 60ea577256..a4420f23d5 100644 --- a/modules/calib3d/src/solvepnp.cpp +++ b/modules/calib3d/src/solvepnp.cpp @@ -137,7 +137,7 @@ bool solvePnP( InputArray _opoints, InputArray _ipoints, CvMat c_cameraMatrix = cameraMatrix, c_distCoeffs = distCoeffs; CvMat c_rvec = rvec, c_tvec = tvec; cvFindExtrinsicCameraParams2(&c_objectPoints, &c_imagePoints, &c_cameraMatrix, - c_distCoeffs.rows*c_distCoeffs.cols ? &c_distCoeffs : 0, + (c_distCoeffs.rows && c_distCoeffs.cols) ? &c_distCoeffs : 0, &c_rvec, &c_tvec, useExtrinsicGuess ); result = true; }