opencv C++视差图代码
时间: 2023-10-10 20:06:03 浏览: 96
以下是一个简单的OpenCV C++视差图代码示例:
```cpp
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
Mat imgL = imread("left.png", IMREAD_GRAYSCALE);
Mat imgR = imread("right.png", IMREAD_GRAYSCALE);
if (imgL.empty() || imgR.empty())
{
cout << "Could not open or find the images!\n";
return -1;
}
int numDisparities = 16 * 5; // 要计算的视差值数量,必须为16的倍数
int blockSize = 25; // 匹配块尺寸,必须是奇数
Ptr<StereoBM> sbm = StereoBM::create(numDisparities, blockSize);
Mat disparity;
sbm->compute(imgL, imgR, disparity);
namedWindow("Left Image", WINDOW_NORMAL);
namedWindow("Right Image", WINDOW_NORMAL);
namedWindow("Disparity", WINDOW_NORMAL);
imshow("Left Image", imgL);
imshow("Right Image", imgR);
imshow("Disparity", disparity);
waitKey(0);
destroyAllWindows();
return 0;
}
```
这个例子中使用了OpenCV自带的StereoBM类来计算视差图,首先读入左右两个图像,然后创建一个StereoBM对象,并指定要计算的视差值数量和匹配块尺寸。最后调用compute函数计算出视差图,并将结果显示出来。
阅读全文