Kinect NUI 概述(一)

Kinect windows 构架

NUI API

NUI API 初始化

NUI 图像数据流概要

NUI 骨骼轨迹

NUI 转换

Kinect windows 构架

SDK提供了丰富的类库及工具帮助开发者使用kinect接收的数据:对真实世界事件的感应和反馈。

Kinect及相关类库与开发者应用程序的关系如图1所示:

Kinect NUI 概述(一)_第1张图片

图1.应用程序和Kinect的交互

SDK的结构如图2所示:

Kinect NUI 概述(一)_第2张图片

图2.SDK架构

SDK包含以下部分:

Kinect硬件

硬件包括传感器、连接计算机的usb集线器

Kinect驱动

kinect windows驱动,随SDK安装包一同安装,kinect驱动支持:

kinect麦克风组,开发者可通过标准音频API直接访问其内核态音频设备。

图像及深度数据流

设备枚举功能,开发者可通过其访问连接在计算机上的多个kinect传感器。

Kinect音频DirectX媒体对象(DMO)

kinect DMO扩展了麦克风组,提供波束形成及声源定位功能。

windows7标准API

音频、语言、多媒体API


NUI API

NUI API是kinect核心API,支持基本的图像和设备管理功能:

访问连接到计算机的kinect传感器

访问来自传感器的图像及深度数据流

提供处理后的图像及深度数据支持骨骼追踪


SDK提供了SkeletalViewer示例的C++及C#版本。SkeletalViewer展示了应用程序中如何使用NUI API 捕获来自NUI摄像头的数据,使用骨骼图像,处理感应数据。详情参见SDK网站上的“Skeletal Viewer Walkthrough”。

NUI API 初始化


kinect驱动支持单计算机多传感器连接。NUI API包括枚举功能,方便开发者确定多少个传感器连接至计算机,获取特定传感器的名称,独立操作每台传感器的打开及流数据特性设置。

尽管SDK支持应用使用多台kinect传感器,但应用在同一时间只能使用其中一台传感器。

传感器的枚举和访问

C++及托管应用通过以下方式枚举已连接的传感器,打开传感器,初始化NUI API:

C++应用使用单台kinect传感器,并初始化NUI API

调用 NuiInitialize:该方法初始化连接到计算机的首个Kinect实例。

调用NUI的其他功能方法处理图像流、骨骼数据及摄像头管理。

结束使用Kinect时调用NuiShutdown。


C++应用使用多台kinect传感器,并初始化NUI API

调用NuiGetSensorCount确定连接的传感器数量。

调用NuiCreateSensorByIndex创建应用使用的每个传感器的实例,该方法返回指向实例的INuiSensor接口指针。

调用INuiSensor::NuiInitialize初始化NUI API。

调用INuiSensor接口的其他功能方法处理图像流、骨骼数据及管理传感器。

结束使用某个Kinect时,在该实例上调用INuiSensor::NuiShutdown关闭NUI API

受管应用使用单台或多台kinect传感器,并初始化NUI API


通过KinectSensor类访问sensor。


KinectSensor sensor = (from sensorToCheck in KinectSensor.KinectSensors 
                          where sensorToCheck.Status == KinectStatus.Connected 
                            select sensorToCheck).FirstOrDefault();
调用 KinectSensor.Start 方法初始化NUI API。


调用托管接口的其他方法处理图像流、骨骼数据及管理传感器。

结束使用Kinect时调用KinectSensor.Stop

初始化选项

NUI API通过多步骤类似管道的方式处理来自Kinect的数据。初始化期间,应用需指定使用的子系统以便运行时可以打开申请的管道。应用可以选择一个多个下述选项:

色彩:来自传感器的彩色图像数据

深度:来自传感器的深度图像数据

深度及玩家序号:传感器的深度数据及骨骼追踪引擎生成的玩家序号

骨骼:骨骼位置数据

上述选项决定了数据流类型及分辨率,如果应用没有在初始化时要求使用深度,后续处理过程将不能打开深度流。

你可能感兴趣的:(Kinect)