用kinect计算物体相对于相机的z坐标

Posted

技术标签:

【中文标题】用kinect计算物体相对于相机的z坐标【英文标题】:Calculate the z coordinate of an object relative to the camera with kinect 【发布时间】:2012-10-16 09:16:41 【问题描述】:

我想计算一个物体相对于相机(kinect)的z坐标,知道来自kinect的深度信息。我也知道内在参数。

非常感谢任何帮助。谢谢!

【问题讨论】:

您使用什么驱动程序? (KinectSDK、OpenKinect/libfreenect、OpenNI?) 那么 c++,对吧?你在使用支持 OpenNI 的 OpenCV 吗? 是的,我得到了深度:depthMap.at 【参考方案1】:

如果您想要真实世界的测量值(包括深度),您想要检索点云图,例如:

Mat world;
if( capture.retrieve(world, CV_CAP_OPENNI_POINT_CLOUD_MAP))
Vec3f pt3D = world.at<Vec3f>(yourY, yourX);
cout << "pt3D" << pt3D << endl;

请注意,您先传递 y,然后传递 x。 我最近有learned that :)

【讨论】:

但是 cout (y,x) 值。相反,我想要沿 z 坐标相机的值 据我所知,OpenNI 抓取器返回 POINT_CLOUD_MAP 的 x,y,z position in meters。这不是你需要的吗? 我尝试选择两个像素:(310,80) 和 (310,80) 但我有 pt3D1[2]=1.014 和 pt3D2[2]=1.052 而它们必须相同跨度> 您可以尝试使用 putText 在输出图像/矩阵中绘制坐标,但假设 (310,80) 是一个有效的深度像素,并且该位置的现实对象不会移动(也kinect),深度值将大致相同,但不完全相同。据我所知,如果您使用华硕传感器检查深度值,同一像素的深度值将保持稳定。不过,我还没有在 kinect 上体验过……深度似乎总是在某个值附近“闪烁”一点

以上是关于用kinect计算物体相对于相机的z坐标的主要内容,如果未能解决你的问题,请参考以下文章

depthmap怎么算智能度

Kinect - 如何计算 1 秒内手关节的加速度 [关闭]

OpenCV:计算相机和物体之间的角度

在Opencv中校准后查找点世界坐标

深度贴图的提取深度值

计算给定 kinect 内部相机参数的外部参数