帮我写一个双目相机测距的代码
时间: 2023-04-02 17:01:44 浏览: 118
以下是一个简单的双目相机测距的代码,供您参考:
```c
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
// 打开左右两个摄像头
VideoCapture capLeft();
VideoCapture capRight(1);
// 设置摄像头分辨率
capLeft.set(CAP_PROP_FRAME_WIDTH, 640);
capLeft.set(CAP_PROP_FRAME_HEIGHT, 480);
capRight.set(CAP_PROP_FRAME_WIDTH, 640);
capRight.set(CAP_PROP_FRAME_HEIGHT, 480);
// 创建窗口
namedWindow("Left", WINDOW_NORMAL);
namedWindow("Right", WINDOW_NORMAL);
// 创建BM算法对象
Ptr<StereoBM> bm = StereoBM::create(16, 9);
while (true)
{
// 读取左右两个摄像头的图像
Mat frameLeft, frameRight;
capLeft >> frameLeft;
capRight >> frameRight;
// 转换为灰度图像
Mat grayLeft, grayRight;
cvtColor(frameLeft, grayLeft, COLOR_BGR2GRAY);
cvtColor(frameRight, grayRight, COLOR_BGR2GRAY);
// 计算视差图
Mat disp;
bm->compute(grayLeft, grayRight, disp);
// 显示左右两个图像和视差图
imshow("Left", frameLeft);
imshow("Right", frameRight);
imshow("Disparity", disp);
// 等待按键
if (waitKey(30) == 27)
break;
}
// 释放摄像头
capLeft.release();
capRight.release();
return ;
}
```
希望对您有所帮助!