diff --git a/modules/contrib/include/opencv2/contrib/contrib.hpp b/modules/contrib/include/opencv2/contrib/contrib.hpp index 0085b0dfe..f18a5f93c 100644 --- a/modules/contrib/include/opencv2/contrib/contrib.hpp +++ b/modules/contrib/include/opencv2/contrib/contrib.hpp @@ -435,7 +435,7 @@ namespace cv typedef bool (*BundleAdjustCallback)(int iteration, double norm_error, void* user_data); - class LevMarqSparse { + class CV_EXPORTS LevMarqSparse { public: LevMarqSparse(); LevMarqSparse(int npoints, // number of points diff --git a/modules/contrib/src/ba.cpp b/modules/contrib/src/ba.cpp index a0f904665..80047877b 100644 --- a/modules/contrib/src/ba.cpp +++ b/modules/contrib/src/ba.cpp @@ -1105,7 +1105,7 @@ void LevMarqSparse::bundleAdjust( vector& points, //positions of points Mat rot_vec = Mat(levmar.P).rowRange(i*num_cam_param, i*num_cam_param+3); Rodrigues( rot_vec, R[i] ); //translation - T[i] = Mat(levmar.P).rowRange(i*num_cam_param + 3, i*num_cam_param+6); + Mat(levmar.P).rowRange(i*num_cam_param + 3, i*num_cam_param+6).copyTo(T[i]); //intrinsic camera matrix double* intr_data = (double*)cameraMatrix[i].data;