attempt to fix stereobm failures on Mac and Linux
authorVadim Pisarevsky <vadim.pisarevsky@gmail.com>
Thu, 4 Apr 2013 10:27:11 +0000 (14:27 +0400)
committerVadim Pisarevsky <vadim.pisarevsky@gmail.com>
Thu, 4 Apr 2013 10:27:11 +0000 (14:27 +0400)
modules/calib3d/test/test_stereomatching.cpp

index b715d48..3a0d73c 100644 (file)
@@ -459,14 +459,29 @@ void CV_StereoMatchingTest::run(int)
             continue;
         }
         int dispScaleFactor = datasetsParams[datasetName].dispScaleFactor;
-        trueLeftDisp.convertTo( trueLeftDisp, CV_32FC1, 1.f/dispScaleFactor );
+        Mat tmp;
+
+        trueLeftDisp.convertTo( tmp, CV_32FC1, 1.f/dispScaleFactor );
+        trueLeftDisp = tmp;
+        tmp.release();
+
         if( !trueRightDisp.empty() )
-            trueRightDisp.convertTo( trueRightDisp, CV_32FC1, 1.f/dispScaleFactor );
+        {
+            trueRightDisp.convertTo( tmp, CV_32FC1, 1.f/dispScaleFactor );
+            trueRightDisp = tmp;
+            tmp.release();
+        }
 
         Mat leftDisp, rightDisp;
         int ignBorder = max(runStereoMatchingAlgorithm(leftImg, rightImg, leftDisp, rightDisp, ci), EVAL_IGNORE_BORDER);
-        leftDisp.convertTo( leftDisp, CV_32FC1 );
-        rightDisp.convertTo( rightDisp, CV_32FC1 );
+
+        leftDisp.convertTo( tmp, CV_32FC1 );
+        leftDisp = tmp;
+        tmp.release();
+
+        rightDisp.convertTo( tmp, CV_32FC1 );
+        rightDisp = tmp;
+        tmp.release();
 
         int tempCode = processStereoMatchingResults( resFS, ci, isWrite,
                    leftImg, rightImg, trueLeftDisp, trueRightDisp, leftDisp, rightDisp, QualityEvalParams(ignBorder));