【发布时间】:2014-12-03 20:08:27
【问题描述】:
我收集了一堆使用 Kinect for windows 2 使用文件扩展名为 .xef 的 kinect studio 的视频。
现在我想编写一个程序来从它们加载数据并播放或另存为另一种格式,但我发现这样做的资源很少,有什么有用的资源可以做到这一点吗?
【问题讨论】:
标签: kinect
我收集了一堆使用 Kinect for windows 2 使用文件扩展名为 .xef 的 kinect studio 的视频。
现在我想编写一个程序来从它们加载数据并播放或另存为另一种格式,但我发现这样做的资源很少,有什么有用的资源可以做到这一点吗?
【问题讨论】:
标签: kinect
实际上,您可以使用 Kinect Studio API 读取和播放自上一个 SDK 版本 (KinectSDK-v2.0_1409) 以来的 .xef 文件。它只是尚未正确记录,但可以集成到您的代码中。这是使用它的简短描述(在 VS 2013 C# 解决方案中尝试过):
API 描述为here。
here 是来自 Microsoft Kinect 团队的 Carmine 的一些示例代码。
【讨论】:
client.CreatePlayback 时(顺便说一句,使用 KSUtil 打开文件时相同,而 KStudio 可以播放文件而没有任何明显问题)。
您可以使用 Kinect Studio 读取 xef 文件,然后转到播放(或播放)选项卡并点击播放,您的程序将开始流式传输。我认为这是做到这一点的唯一方法,就像它来自 kinect 一样。
【讨论】:
GetDefaultKinectSensor 的 Kinect 实例,调用 Open,获取 IBodyFrameSource 和 IBodyFrameReader,一切都很好,但是当我打电话给IBodyFrameReader::AcquireLatestFrame,它给了我“E_PENDING 完成此操作所需的数据尚不可用。”。与 SDK 中包含的示例代码相同,顺便说一句。
似乎还没有办法解析 XEF 文件以直接提取图像。
如果您不需要 XEF 文件中存储的所有帧,即丢帧是可以的,间接的方法是让 Kinect 应用程序通过 Kinect 服务从 XEF 文件接收帧。
快速测试是:
然后您可以修改 ColorBasics 或 DepthBasics 中的源代码以相应地保存图像。如果您关心对齐深度和彩色图像,您可以修改 KinectFusionExplorer-D2D。
这种方法只能捕获 XEF 中存储的帧子集,因为通过 Kinect 服务进行的播放和帧接收是异步的。因此,只有在您的程序中不存在丢帧问题时,它才会起作用。
【讨论】: