Kinect SDK与WPF应用开发

Kinect SDK为开发者提供了自然用户交互和音频API,并且可以与现有的Microsoft Speech API一起使用。本文将展示如何创建一个执行骨架追踪的WPF应用程序。

准备工作

在开始之前,请确保卸载任何先前的Kinect驱动程序,例如PrimeSensor、CL NUI、OpenKinect等。

下载官方Kinect SDK并安装。系统要求包括:

  • Kinect for Windows或Kinect for XBOX传感器
  • 具有双核心、2.66-GHz处理器的计算机
  • 支持DirectX® 9.0c功能的Windows 7兼容显卡
  • 2-GB RAM
安装完成后,请记得重启计算机!

第二步:启动Visual Studio并创建新的WPF应用程序

打开Visual Studio,创建一个新的WPF应用程序。

第三步:添加对Microsoft.Research.Kinect程序集的引用

在.NET标签下添加对Microsoft.Research.Kinect程序集的引用。不要忘记在xaml.cs文件中包含其命名空间。这里只包含了Nui命名空间,因为目前不需要音频功能。

C# using Microsoft.Research.Kinect.Nui;

第四步:创建用户界面

用户界面包括一个显示原始摄像头输出的图像和一个显示用户关节的画布:

XML <Grid> <Image Name="img" Width="640" Height="480" /> <Canvas Name="canvas" Width="640" Height="480" /> </Grid>

打开xaml.cs文件并开始编写代码。Kinect API提供了一个Runtime对象来完成任务:

C# Runtime _nui = new Runtime();

接下来,需要初始化Runtime对象然后打开视频流:

C# _nui.Initialize(RuntimeOptions.UseDepthAndPlayerIndex | RuntimeOptions.UseSkeletalTracking | RuntimeOptions.UseColor); _nui.VideoStream.Open(ImageStreamType.Video, 2, ImageResolution.Resolution640x480, ImageType.Color);

最后,需要定义适当的事件处理程序来显示摄像头图像和骨架识别。非常简单:

C# _nui.VideoFrameReady += new EventHandler<imageframereadyeventargs>(Nui_VideoFrameReady); _nui.SkeletonFrameReady += new EventHandler<skeletonframereadyeventargs>(Nui_SkeletonFrameReady);

以下是每个方法的实现。它们是自解释的,并且与Nui.Vision库非常相似。

C# void Nui_VideoFrameReady(object sender, ImageFrameReadyEventArgs e) { var image = e.ImageFrame.Image; img.Source = BitmapSource.Create(image.Width, image.Height, 96, 96, PixelFormats.Bgr32, null, image.Bits, image.Width * image.BytesPerPixel); } C# void Nui_SkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e) { canvas.Children.Clear(); foreach (SkeletonData user in e.SkeletonFrame.Skeletons) { if (user.TrackingState == SkeletonTrackingState.Tracked) { foreach (Joint joint in user.Joints) { DrawPoint(joint, Colors.Blue); } } } }
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485