c++ - 使用opencv CUDA和BM的结果奇怪

标签 c++ opencv

希望您能帮助我找出CUDA BM为什么给我带来奇怪的结果。我只想生成两个校正图像的视差图。但是结果如下:

这是一段代码:

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

最佳答案

据我所知,这是显示和图像深度的问题(无符号short,float等)
下载后将其标准化显示在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)

关于c++ - 使用opencv CUDA和BM的结果奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21962712/

相关文章:

c++ - 堆损坏错误;无法发布 cv::Mat opencv

c++ - 什么是 xtree 是 Visual C++?

c++ - 通过 boost 和 c++ 进行 smtp 身份验证

c++ - openCV 的 HSV 色轮图像?

linux - 安装 OpenCV 时出错

opencv - VideoCapture失败,USB 3.0端口中的相机

python - OpenCV 估计 Affine3D 失败并显示神秘的错误消息

c++ - 'a' 和 "a"有什么区别?

c++ - 如何确定 C++ 类是否具有 vtable?

c++ - OpenCV如何平滑边界