Camera 使用kinect计算对象相对于摄影机的z坐标

Camera 使用kinect计算对象相对于摄影机的z坐标,camera,coordinates,kinect,Camera,Coordinates,Kinect,我想计算一个物体相对于摄像机kinect的z坐标,知道kinect的深度信息。我也知道内在参数 非常感谢您的帮助。谢谢 如果需要真实世界的测量值,包括深度,则需要检索点云地图,例如: Mat world; if( capture.retrieve(world, CV_CAP_OPENNI_POINT_CLOUD_MAP)){ Vec3f pt3D = world.at<Vec3f>(yourY, yourX); cout << "pt3D" << pt3D &

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


非常感谢您的帮助。谢谢

如果需要真实世界的测量值,包括深度,则需要检索点云地图,例如:

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。
我最近有点担心:

您使用的是什么驱动程序?KinectSDK,OpenKeCTe/LBFReNeCT,OpenNI?SO C++,对吗?您使用的是OpenNI支持下构建的OpenCV吗?是的,我使用:depthMap.at获取深度,但据我所知,OpenNI抓取程序返回点云地图的深度。这不是你需要的吗?我尝试选择了两个像素:310,80和310,80,但我选择了pt3D1[2]=1.014和pt3D2[2]=1.052,它们必须是相同的。你可以尝试使用putText在输出图像/矩阵中绘制坐标,但假设310,80是一个有效的深度像素,并且现实生活中该位置的对象不移动,kinect也不移动,深度值将大致相同,但不完全相同。据我所知,如果使用Asus传感器检查深度值,相同像素的深度值将保持稳定。不过,我还没有体验过kinect的这种情况……深度似乎总是在某个值附近“闪烁”一点