From ed55d13112bbe28b6616c9bf4b82bb3e5d9a2e2e Mon Sep 17 00:00:00 2001 From: Alexander Duda Date: Sun, 9 Nov 2014 23:08:47 +0100 Subject: [PATCH 1/2] PnPRansacCallback::computeError: fix count in case of Nx3 matrices --- 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 bdc32c6959..a44eb62e29 100644 --- a/modules/calib3d/src/solvepnp.cpp +++ b/modules/calib3d/src/solvepnp.cpp @@ -160,7 +160,7 @@ public: Mat opoints = _m1.getMat(), ipoints = _m2.getMat(), model = _model.getMat(); - int i, count = opoints.cols; + int i, count = opoints.checkVector(3); Mat _rvec = model.col(0); Mat _tvec = model.col(1); From 60cacbfd66e4ab0c40ad20ffc3984394785a3966 Mon Sep 17 00:00:00 2001 From: Alexander Duda Date: Sun, 9 Nov 2014 23:10:43 +0100 Subject: [PATCH 2/2] solvePnPRansac: fix mask generation --- modules/calib3d/src/solvepnp.cpp | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/modules/calib3d/src/solvepnp.cpp b/modules/calib3d/src/solvepnp.cpp index a44eb62e29..129c10ee76 100644 --- a/modules/calib3d/src/solvepnp.cpp +++ b/modules/calib3d/src/solvepnp.cpp @@ -251,14 +251,10 @@ bool cv::solvePnPRansac(InputArray _opoints, InputArray _ipoints, if(_inliers.needed()) { Mat _local_inliers; - int count = 0; - for (int i = 0; i < _mask_local_inliers.rows; ++i) + for (int i = 0; i < npoints; ++i) { - if((int)_mask_local_inliers.at(i) == 1) // inliers mask - { - _local_inliers.push_back(count); // output inliers vector - count++; - } + if((int)_mask_local_inliers.at(i) != 0) // inliers mask + _local_inliers.push_back(i); // output inliers vector } _local_inliers.copyTo(_inliers); }