From 6aa4f533fa8694fced893a561382261eef5339a9 Mon Sep 17 00:00:00 2001 From: Vadim Pisarevsky Date: Thu, 4 Apr 2013 14:27:11 +0400 Subject: [PATCH] attempt to fix stereobm failures on Mac and Linux --- modules/calib3d/test/test_stereomatching.cpp | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/modules/calib3d/test/test_stereomatching.cpp b/modules/calib3d/test/test_stereomatching.cpp index b715d48..3a0d73c 100644 --- a/modules/calib3d/test/test_stereomatching.cpp +++ b/modules/calib3d/test/test_stereomatching.cpp @@ -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)); -- 2.7.4