Opencv 无法从L/R对获得正确的立体声

Opencv 无法从L/R对获得正确的立体声,opencv,computer-vision,stereo-3d,Opencv,Computer Vision,Stereo 3d,我用左边和右边的图像运行下面的代码,得到了奇怪的结果。我不太确定我做错了什么。首先,为什么它是裁剪的,为什么差异都是一种颜色 CvStereoBMState *BMState = cvCreateStereoBMState(); assert(BMState != 0); BMState->preFilterSize=41; BMState->preFilterCap=31; BMState->SADWindowSize=41; BMState->minDisparity

我用左边和右边的图像运行下面的代码,得到了奇怪的结果。我不太确定我做错了什么。首先,为什么它是裁剪的,为什么差异都是一种颜色

CvStereoBMState *BMState = cvCreateStereoBMState();
assert(BMState != 0);
BMState->preFilterSize=41;
BMState->preFilterCap=31;
BMState->SADWindowSize=41;
BMState->minDisparity=-64;
BMState->numberOfDisparities=128;
BMState->textureThreshold=10;
BMState->uniquenessRatio=5;

CvMat* disp = cvCreateMat(image_pyramid[0][0]->height, image_pyramid[0][0]->width, CV_16S);
CvMat* vdisp = cvCreateMat(image_pyramid[0][0]->height, image_pyramid[0][0]->width, CV_8U);

cvFindStereoCorrespondenceBM(image_pyramid[0][0], image_pyramid[1][0], disp, BMState);
cvNormalize(disp, vdisp, 0, 256, CV_MINMAX);
cvSaveImage("wowicantbelieveitsnotbutter.jpg", vdisp);

我不确定裁剪后的图像,但我认为应该将其规格化为0..1范围,而不是0..255范围,因为它不是8位图像


也可能它看起来被裁剪了,因为黑色值实际上是负数。

我不确定裁剪的图像,但我认为应该将其规格化为0..1范围,而不是0..255范围,因为它不是8位图像


也可能它看起来被裁剪了,因为黑色值实际上是负数。

尝试将最小视差更改为零。这可能有助于解决裁剪带来的问题。我确实面临同样的问题。但我带来了BMTuner的解决方案。我看过一段录像。在这里我附上视频,这可能有助于你的裁剪问题


尝试将“最小视差”更改为零,这可能有助于解决因裁剪而产生的问题。我确实面临同样的问题。但我带来了BMTuner的解决方案。我看过一段录像。在这里我附上视频,这可能有助于你的裁剪问题