gpt4 book ai didi

opencv - 计算距离(视差)OpenCV

转载 作者:太空宇宙 更新时间:2023-11-03 20:49:48 36 4
gpt4 key购买 nike

-- 更新 2 --

如果您使用单个相机计算距离,下面的文章非常有用(尽管它使用的是 Python 而不是 C++):Find distance from camera to object/marker using Python and OpenCV

最佳链接Stereo Webcam Depth Detection .这个开源项目的实现非常清晰。

下面是原始问题。


在我的项目中,我使用两个摄像头(立体视觉)来跟踪物体并计算距离。我用OpenCV的示例代码对它们进行了校准,并生成了视差图。

我已经实现了一种基于颜色跟踪对​​象的方法(这会生成阈值图像)。

我的问题:如何使用视差图/矩阵计算到跟踪的有色物体的距离?

您可以在下面找到获取每个像素的 x、y 和 z 坐标的代码片段。问题:Point.z 的单位是厘米、像素还是毫米?

我可以用这段代码获取到跟踪对象的距离吗?

提前致谢!

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);

--更新一--

例如,我生成了这个阈值图像(左侧摄像头)。我几乎拥有相同的正确相机。

enter image description here

除上述阈值图像外,应用程序还生成视差图。如何获得视差图中手的像素的 Z 坐标?

我其实是想得到手上所有像素点的Z坐标来计算平均Z值(距离)(使用视差图)。

最佳答案

关于opencv - 计算距离(视差)OpenCV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17095972/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com