我希望你能帮我找出为什么CUDA黑石会给我奇怪的结果。我只想生成两个校正后的图像的视差图。但结果如下:
下面是这段代码:
Mat img1, img2;
img1 = imread("img1.jpg", IMREAD_GRAYSCALE);
img2 = imread("img2.jpg", IMREAD_GRAYSCALE);
cuda::GpuMat d_left, d_right;
Ptr<cuda::StereoBM> bm;
bm = cuda::createStereoBM(64, 5);
Mat disp(img1.size(), CV_8U);
cuda::GpuMat d_disp(img1.size(), CV_8U);
d_left.upload(img1);
d_right.upload(img2);
bm->compute(d_right, d_left, d_disp);
cuda::drawColorDisp(d_disp, d_disp, 64);
d_disp.download(disp);
resize(disp, disp, Size(0,0), 0.3, 0.3, 1);
imshow("disparity", disp);
waitKey(0);
发布于 2019-12-18 18:09:03
据我所知,这是一个显示和图像深度的问题(无符号短,浮点数等)下载后将其在0到1之间进行标准化,然后乘以255并转换为uint8
Mat displayMat;
double minVal, maxVal;
minMaxLoc(disp, &minVal, &maxVal);
disp = 255.*(disp - minVal)/(maxVal - minVal);
disp.convertTo(displayMat, CV_8U);
imshow("disparity", displayMat)
https://stackoverflow.com/questions/21962712
复制相似问题