From f64f4bc3a94d104c6043a742bcd1983d0849746a Mon Sep 17 00:00:00 2001
From: Pierre-Emmanuel Viel
Date: Sat, 15 Aug 2020 20:29:02 +0200
Subject: [PATCH] Fix matching::maxDisparity value when calling
StereoBinarySGBM::setNumDisparities after ctor
Note that it considers maxDisparity==numDisparities, and so minDisparity as being 0
---
modules/stereo/src/stereo_binary_sgbm.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/modules/stereo/src/stereo_binary_sgbm.cpp b/modules/stereo/src/stereo_binary_sgbm.cpp
index 2b23cccf3..4dccbc2a3 100644
--- a/modules/stereo/src/stereo_binary_sgbm.cpp
+++ b/modules/stereo/src/stereo_binary_sgbm.cpp
@@ -725,7 +725,8 @@ namespace cv
void setMinDisparity(int minDisparity) CV_OVERRIDE {CV_Assert(minDisparity >= 0); params.minDisparity = minDisparity; }
int getNumDisparities() const CV_OVERRIDE { return params.numDisparities; }
- void setNumDisparities(int numDisparities) CV_OVERRIDE { CV_Assert(numDisparities > 0); params.numDisparities = numDisparities; }
+ void setNumDisparities(int numDisparities) CV_OVERRIDE { CV_Assert(numDisparities > 0); params.numDisparities = numDisparities;
+ Matching::setMaxDisparity(numDisparities /*- params.minDisparity*/);}
int getBlockSize() const CV_OVERRIDE { return params.kernelSize; }
void setBlockSize(int blockSize) CV_OVERRIDE {CV_Assert(blockSize % 2 != 0); params.kernelSize = blockSize; }