我试图从 RGB 流中简单地获取给定 2D ColorSpacePoint的 3D CameraSpacePoint位置。
查看CoordinatorMapper 方法,从颜色坐标映射的唯一方法是:
MapColorFrameToDepthSpace 将帧从颜色空间映射到深度空间。 MapColorFrameToDepthSpaceUsingIBuffer 将帧从颜色空间映射到深度空间。 MapDepthFrameToCameraSpace将帧从深度空间映射到相机空间。 MapDepthFrameToCameraSpaceUsingIBuffer将帧从深度空间映射到相机空间。
问题是,在我的旧 PC 上,当我尝试使用 MapColorFrameToDepthSpace 时,速度从 ~33fps 下降到 ~10fps。我猜想将 1920x1080 点从 2D 转换为 3D 需要一段时间,但我希望有更快的方法,因为我需要为我的应用程序转换一个点。甚至 SDK 示例(c++ 和 c#)也以 ~1fps 的速度运行,用于颜色到相机的转换演示。
即使我使用MapDepthFrameToCameraSpace
then MapDepthPointToCameraSpace
,当我只需要一个点时,它仍然会将整个深度帧转换为相机空间。
有没有办法将单个 ColorSpacePoint 转换为 CameraPoint ?如果有怎么办?否则我怎么能加速 ColorSpace 到 CameraSpace 的映射?
是否有任何其他 SDK(libfreenect2 等)提供更有效的方法来检索颜色流上某个位置的深度?