Kinect v2,从.xef文件中读出数据

时间:2014-12-03 20:08:27

标签: kinect

我使用kinect工作室使用Kinect for Windows 2收集了一堆视频,文件扩展名为.xef。

现在我想编写一个程序来加载来自它们的数据,只是回放或保存为另一种格式,但我发现这样做的资源很少,有没有可用的资源呢?

3 个答案:

答案 0 :(得分:15)

实际上,您可以使用Kinect Studio API来读取和播放自上一个SDK版本(KinectSDK-v2.0_1409)以来的.xef文件。它尚未正确记录,但可以集成到您的代码中。以下是使用它的简短描述(在VS 2013 C#解决方案中尝试过):

  1. 转到KinectStudio的安装文件夹(例如C:\ Program Files \ Microsoft SDKs \ Kinect \ v2.0_1409 \ Tools \ KinectStudio)。
  2. 在您的项目中引用“Microsoft.Kinect.Tools.dll”。
  3. 将“KStudioService.dll”复制到Debug或Release文件夹。
  4. 将BuildProperties更改为x64(否则会出现BadImageFormatException)。
  5. API描述为here

    here是来自Microsoft Kinect团队的Carmine的一些示例代码。

答案 1 :(得分:1)

你可以做的是使用Kinect Studio读取xef文件,然后进入Play(或Playback)选项卡并点击播放,你的程序将开始流式传输。我认为这是做到这一点的唯一方法,就像它来自kinect。

答案 2 :(得分:1)

似乎没有办法解析XEF文件以直接提取图像。

如果您不需要存储在XEF文件中的所有帧,即帧丢弃是正常的,则间接方式是使Kinect应用程序通过Kinect服务从XEF文件接收帧。

快速测试是:

  1. 启动KinectStudio,连接到Kinect服务,打开XEF文件。
  2. 启动ColorBasics-D2D或DepthBasics-D2D(来自Kinect v2 SDK)。
  3. 在KinectStudio中播放XEF文件。
  4. 颜色/深度框架显示在ColorBasics或DepthBasics应用程序中。
  5. 然后,您可以修改ColorBasics或DepthBasics中的源代码以相应地保存图像。如果您关心对齐深度和彩色图像,可以修改KinectFusionExplorer-D2D。

    这种方法只能捕获存储在XEF中的帧子集,因为通过Kinect服务进行的回放和帧接收是异步的。因此,只有在程序中丢帧不是问题时才会起作用。