From 5d0442021f8321c5f5f46449ea0e7d099d6998e6 Mon Sep 17 00:00:00 2001
From: Sebastian Hahta <joseha@utu.fi>
Date: Thu, 20 Jun 2019 14:49:55 +0300
Subject: [PATCH] fix step

---
 .../rgbd-sources/src/algorithms/fixstars_sgm.cpp      |  4 ++--
 components/rgbd-sources/src/calibrate.cpp             | 11 +++++++++--
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/components/rgbd-sources/src/algorithms/fixstars_sgm.cpp b/components/rgbd-sources/src/algorithms/fixstars_sgm.cpp
index 89c78b12b..bd9f02537 100644
--- a/components/rgbd-sources/src/algorithms/fixstars_sgm.cpp
+++ b/components/rgbd-sources/src/algorithms/fixstars_sgm.cpp
@@ -25,11 +25,11 @@ void FixstarsSGM::compute(const cv::cuda::GpuMat &l, const cv::cuda::GpuMat &r,
 	cv::cuda::cvtColor(r, rbw, cv::COLOR_BGR2GRAY);
 
 	if (disp.type() != CV_16SC1 || disp.rows != l.rows || disp.cols != l.cols) {
-		disp = GpuMat(l.rows, l.cols, CV_16SC1, cv::Scalar(0));
+		disp = GpuMat(l.rows, l.cols, CV_16SC1);
 	}
 
 	if (!ssgm_) { // todo: move to constructor
-		ssgm_ = new sgm::StereoSGM(l.cols, l.rows, max_disp_, 8, 16, l.step, disp.step,
+		ssgm_ = new sgm::StereoSGM(l.cols, l.rows, max_disp_, 8, 16, lbw.step, disp.step / sizeof(short),
 			sgm::EXECUTE_INOUT_HOST2HOST, sgm::StereoSGM::Parameters(10,120,0.95f,true));
 	}
 
diff --git a/components/rgbd-sources/src/calibrate.cpp b/components/rgbd-sources/src/calibrate.cpp
index f9d0f2532..51767128e 100644
--- a/components/rgbd-sources/src/calibrate.cpp
+++ b/components/rgbd-sources/src/calibrate.cpp
@@ -116,8 +116,15 @@ bool Calibrate::_loadCalibration(cv::Size img_size, std::pair<Mat, Mat> &map1, s
 }
 
 void Calibrate::rectifyStereo(GpuMat &l, GpuMat &r, Stream &stream) {
-	cv::cuda::remap(l, l, map1_gpu_.first, map2_gpu_.first, INTER_LINEAR);
-	cv::cuda::remap(r, r, map1_gpu_.second, map2_gpu_.second, INTER_LINEAR);
+	// cv::cuda::remap() can not use same Mat for input and output
+	
+	GpuMat l_tmp(l.size(), l.type());
+	GpuMat r_tmp(r.size(), r.type());
+	cv::cuda::remap(l, l_tmp, map1_gpu_.first, map2_gpu_.first, cv::INTER_LINEAR, 0, cv::Scalar(), stream);
+	cv::cuda::remap(r, r_tmp, map1_gpu_.second, map2_gpu_.second, cv::INTER_LINEAR, 0, cv::Scalar(), stream);
+	stream.waitForCompletion();
+	l = l_tmp;
+	r = r_tmp;
 }
 
 bool Calibrate::isCalibrated() {
-- 
GitLab