单目相机测距代码c++
时间: 2023-09-13 07:07:54 浏览: 32
单目相机测距可以通过计算物体在图像上的像素大小和实际物体大小之间的比例来实现。以下是一个简单的 C++ 示例代码:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
// 读取图像
Mat image = imread("image.jpg");
// 物体实际大小
float objectWidth = 10; // 单位为厘米
// 计算物体在图像上的像素大小
Rect roi(100, 100, 200, 200); // 选取一个感兴趣区域
Mat roiImage = image(roi);
int objectPixelWidth = roiImage.cols;
// 计算像素大小和实际大小之间的比例
float pixelToCmRatio = objectWidth / objectPixelWidth;
// 测量物体到相机的距离
float focalLength = 500; // 相机的焦距,单位为像素
float objectDistance = focalLength * objectWidth / objectPixelWidth; // 单位为厘米
// 输出结果
cout << "物体在图像上的像素大小:" << objectPixelWidth << endl;
cout << "像素大小和实际大小之间的比例:" << pixelToCmRatio << endl;
cout << "物体距离相机的距离:" << objectDistance << "厘米" << endl;
return 0;
}
```
需要注意的是,这个示例代码仅仅提供了一个简单的实现思路,实际应用中会更加复杂。例如,需要考虑相机的内参、畸变等因素对测距的影响。