Odr*_*rai 6 opencv distance vision disparity-mapping stereoscopy
- 更新2 -
如果您使用单个摄像头计算距离,以下文章非常有用(尽管它使用的是Python而不是C++):使用Python和OpenCV查找从摄像机到对象/标记的距离
最佳链接是 Stereo Webcam Depth Detection.这个开源项目的实施非常清楚.
以下是原始问题.
对于我的项目,我使用两个摄像头(立体视觉)来跟踪物体并计算距离.我用OpenCV的示例代码校准它们并生成视差图.
我已经实现了一种基于颜色跟踪对象的方法(这会生成一个阈值图像).
我的问题:如何使用视差图/矩阵计算到跟踪彩色物体的距离?
您可以在下面找到获取每个像素的x,y和z坐标的代码段.问题是:Point.z是cm,像素,mm?
我可以使用此代码获取跟踪对象的距离吗?
先感谢您!
cvReprojectImageTo3D(disparity, Image3D, _Q);
vector<CvPoint3D32f> PointArray;
CvPoint3D32f Point;
for (int y = 0; y < Image3D->rows; y++) {
float *data = (float *)(Image3D->data.ptr + y * Image3D->step);
for (int x = 0; x < Image3D->cols * 3; x = x + 3)
{
Point.x = data[x];
Point.y = data[x+1];
Point.z = data[x+2];
PointArray.push_back(Point);
//Depth > 10
if(Point.z > 10)
{
printf("%f %f %f", Point.x, Point.y, Point.z);
}
}
}
cvReleaseMat(&Image3D);
Run Code Online (Sandbox Code Playgroud)
- 更新1 -
例如,我生成了这个阈值图像(左相机).我几乎拥有相同的相机.

除了上述阈值图像之外,应用程序还生成视差图.如何在视差图中获得手的像素的Z坐标?
我实际上想要得到手的像素的所有Z坐标来计算平均Z值(距离)(使用视差图).
请参阅此链接:OpenCV:如何使用图像计算相机和物体之间的距离?,查找从相机到已知大小的物体的距离,http://answers.opencv.org/question/5188/measure-distance-from-Detected-object-using-opencv/
如果它不能解决您的问题,请写更多详细信息 - 为什么它不起作用,等等。
| 归档时间: |
|
| 查看次数: |
13587 次 |
| 最近记录: |