65.9K
CodeProject 正在变化。 阅读更多。
Home

Kinect 和 WPF:完整身体追踪

starIconstarIconstarIconstarIconstarIcon

5.00/5 (5投票s)

2011年3月15日

Ms-PL

2分钟阅读

viewsIcon

66045

Kinect 中的完整身体追踪。

现在是时候进行一个真正有趣且实用的 Kinect 教程了。我们将看到如何使用 Kinect 传感器、OpenNI 库和 Windows Presentation Foundation 实现全身追踪

我发现 OpenNI C# 示例有点混乱,所以我决定开发一个 .NET 4 包装库,它可以用于 WPF 应用程序,无需像 GDI+、System.Drawing 等 .NET 2 组件。我将其命名为 Nui.Vision,它是当前我正在开发的更大框架的一部分。Nui.Vision 是一个 .NET 4 程序集,它提供了一个易于使用的身体追踪 API!

2011年4月20日更新

Nui.Vision 现在与 OpenNI 框架的最新版本 (1.1.0.41) 兼容。我对其进行了一些更改和错误修复,包括 roni26_wu 提供的骨骼显示修复(请参阅下面的评论)。Nui.Vision 的开源版本即将发布!

必备组件

使用库

使用 Nui.Vision 就像小菜一碟。所有的身体追踪都在后台完成,所以你只需要在适当的事件触发时更新你的用户界面。首先,添加对 OpenNi.net.dll 和 Nui.Vision.dll 的引用。 另外,按照此处描述的方式,将有效的配置文件导入到你的项目中。不要忘记输入相应的 using 语句

using Nui.Vision;

然后声明一个新的 NuiUserTracker 对象,并在构造函数中初始化它。提供之前导入的配置文件的路径(不要忘记将相同的文件粘贴到应用程序的 Debug/Release 文件夹中)

_skeleton = new NuiUserTracker("SamplesConfig.xml");

紧接着,你需要定义 UserUpdated 事件。

_skeleton.UsersUpdated += new NuiUserTracker.UsersUpdatedHandler(Skeleton_UserUpdated);

创建了一个适当的事件处理程序。 NuiUserEventArgs 参数为你提供了所有已识别用户的集合!现在你可以获得每个用户每个身体部位的坐标(X、Y 和 Z)(OpenNI 当前支持 15 个身体部位)!

foreach (var user in e.Users) {
    float headX = user.Head.X;
    float headY = user.Head.Y;
    float headZ = user.Head.Z;
    float neckX = user.Neck.X;
    float neckY = user.Neck.Y;
    // etc... 
}

很简单,对吧?

以下是所有可用身体部位的列表

  • Head
  • 弦颈
  • 左肩
  • 左肘
  • 左手
  • 右肩
  • 右肘
  • 右手
  • 躯干
  • 左膝
  • 左髋
  • 左脚
  • 右膝
  • 右髋
  • 右脚

现在你可以开始开发很酷的 WPF Kinect 应用程序和游戏了。想象力是极限。

© . All rights reserved.