我正在尝试在 OpenCV 中使用 StereoBM 从一对图像中提取视差图。忽略下面视差图的不良质量,您可以看到它的左侧有许多黑色列,对应于参数 ndisparities。我认为 ndisparities 只告诉 StereoBM 它可以在多远的地方搜索对应关系。什么可能导致这种行为?它似乎限制了生成的深度图的宽度,但我不明白为什么。
你可以在这里看到立体声对和下面的代码。提前感谢您的任何指点!
Mat Limg = imread("left.jpg", CV_LOAD_IMAGE_GRAYSCALE);
Mat Rimg = imread("right.jpg", CV_LOAD_IMAGE_GRAYSCALE);
Mat disp(Limg.size(), CV_16SC1), disp8U;
int ndisparities = 512;
StereoBM SBM(StereoBM::BASIC_PRESET, ndisparities , 11);
SBM(Limg, Rimg, disp, CV_16S);
double minVal, maxVal;
minMaxLoc( disp, &minVal, &maxVal );
disp.convertTo( disp8U, CV_8UC1, 255/(maxVal - minVal));
imshow("disparity", disp8U)