fixes in bundle adjustment code by Nils Hasler
authorVadim Pisarevsky <vadim.pisarevsky@gmail.com>
Mon, 1 Apr 2013 11:20:35 +0000 (15:20 +0400)
committerVadim Pisarevsky <vadim.pisarevsky@gmail.com>
Mon, 1 Apr 2013 11:20:35 +0000 (15:20 +0400)
modules/contrib/include/opencv2/contrib/contrib.hpp
modules/contrib/src/ba.cpp

index 0085b0d..f18a5f9 100644 (file)
@@ -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
index a0f9046..8004787 100644 (file)
@@ -1105,7 +1105,7 @@ void LevMarqSparse::bundleAdjust( vector<Point3d>& 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;