opencv C++视差图代码
时间: 2023-10-10 17:09:43 浏览: 204
以下是使用OpenCV C++库计算视差图的示例代码:
```cpp
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
// 读取左右两张图像
Mat img_left = imread("left.png", IMREAD_GRAYSCALE);
Mat img_right = imread("right.png", IMREAD_GRAYSCALE);
// 定义双目视差计算参数
int min_disparity = 0;
int max_disparity = 64;
int block_size = 3;
StereoSGBM sgbm(min_disparity, max_disparity, block_size);
// 计算视差图
Mat disp;
sgbm(img_left, img_right, disp);
// 显示视差图
Mat disp_norm;
normalize(disp, disp_norm, 0, 255, NORM_MINMAX, CV_8U);
imshow("Disparity Map", disp_norm);
waitKey(0);
return 0;
}
```
其中,左右两张图片需要自行准备,`min_disparity`和`max_disparity`定义了视差搜索的最小和最大范围,`block_size`是视差计算窗口的大小,`StereoSGBM`是OpenCV中用于双目视差计算的类,`sgbm`是双目视差计算器对象,`sgbm(img_left, img_right, disp)`将左右两张图片和输出的视差图传入计算器对象中,`normalize`函数用于将视差图转换为可视化的图像。
阅读全文