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; }