【发布时间】:2018-02-21 00:30:46
【问题描述】:
我试图从 RGB 流中简单地获取给定 2D ColorSpacePoint 的 3D CameraSpacePoint 位置。
查看CoordinatorMapper Methods,从颜色坐标映射的唯一方法是:
MapColorFrameToDepthSpace 将帧从颜色空间映射到深度空间。 MapColorFrameToDepthSpaceUsingIBuffer 将帧从颜色空间映射到深度空间。 MapDepthFrameToCameraSpace 将帧从深度空间映射到相机空间。 MapDepthFrameToCameraSpaceUsingIBuffer 将帧从深度空间映射到相机空间。
问题是,在我的旧 PC 上,当我尝试使用 MapColorFrameToDepthSpace 时,速度从 ~33fps 下降到 ~10fps。我猜想将 1920x1080 点从 2D 转换为 3D 需要一段时间,但我希望有更快的方法,因为我需要为我的应用程序转换一个点。甚至 SDK 示例(c++ 和 c#)在颜色到相机的转换演示中也以 ~1fps 的速度运行。
即使我使用MapDepthFrameToCameraSpace 然后MapDepthPointToCameraSpace 在我只需要一个点时仍会将整个深度帧转换为相机空间。
有没有办法将单个 ColorSpacePoint 转换为 CameraPoint ? 如果有怎么办?否则如何加快 ColorSpace 到 CameraSpace 的映射?
是否有任何其他 SDK(libfreenect2 等)提供更有效的方法来检索颜色流上某个位置的深度?
【问题讨论】:
-
@HansPassant 非常注意,但这并不意味着传感器仍然不能成为有用的工具
-
我们不想误导其他程序员这仍然是可行的,不是吗?已发布通知。
-
是的。我仍然希望有大量的媒体和装置艺术家、计算机视觉和机器人研究人员等使用 Kinect,并且可能仍然使用它并发现它有用(即使没有微软的支持)。如果 Microsoft Kinect SDK 之外还有其他选项,我也很感兴趣
标签: c++ optimization kinect-sdk kinect-v2 libfreenect2