Kinect windows 构架
NUI API
NUI API 初始化
NUI 图像数据流概要
NUI 骨骼轨迹
NUI 转换
SDK提供了丰富的类库及工具帮助开发者使用kinect接收的数据:对真实世界事件的感应和反馈。
Kinect及相关类库与开发者应用程序的关系如图1所示:
图1.应用程序和Kinect的交互
SDK的结构如图2所示:
图2.SDK架构
SDK包含以下部分:
硬件包括传感器、连接计算机的usb集线器
kinect windows驱动,随SDK安装包一同安装,kinect驱动支持:
kinect麦克风组,开发者可通过标准音频API直接访问其内核态音频设备。
图像及深度数据流
设备枚举功能,开发者可通过其访问连接在计算机上的多个kinect传感器。
kinect DMO扩展了麦克风组,提供波束形成及声源定位功能。
音频、语言、多媒体API
NUI API是kinect核心API,支持基本的图像和设备管理功能:
访问连接到计算机的kinect传感器
访问来自传感器的图像及深度数据流
提供处理后的图像及深度数据支持骨骼追踪
SDK提供了SkeletalViewer示例的C++及C#版本。SkeletalViewer展示了应用程序中如何使用NUI API 捕获来自NUI摄像头的数据,使用骨骼图像,处理感应数据。详情参见SDK网站上的“Skeletal Viewer Walkthrough”。
kinect驱动支持单计算机多传感器连接。NUI API包括枚举功能,方便开发者确定多少个传感器连接至计算机,获取特定传感器的名称,独立操作每台传感器的打开及流数据特性设置。
尽管SDK支持应用使用多台kinect传感器,但应用在同一时间只能使用其中一台传感器。
C++及托管应用通过以下方式枚举已连接的传感器,打开传感器,初始化NUI API:
调用 NuiInitialize:该方法初始化连接到计算机的首个Kinect实例。
调用NUI的其他功能方法处理图像流、骨骼数据及摄像头管理。
结束使用Kinect时调用NuiShutdown。
调用NuiGetSensorCount确定连接的传感器数量。
调用NuiCreateSensorByIndex创建应用使用的每个传感器的实例,该方法返回指向实例的INuiSensor接口指针。
调用INuiSensor::NuiInitialize初始化NUI API。
调用INuiSensor接口的其他功能方法处理图像流、骨骼数据及管理传感器。
结束使用某个Kinect时,在该实例上调用INuiSensor::NuiShutdown关闭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的数据。初始化期间,应用需指定使用的子系统以便运行时可以打开申请的管道。应用可以选择一个多个下述选项:
色彩:来自传感器的彩色图像数据
深度:来自传感器的深度图像数据
深度及玩家序号:传感器的深度数据及骨骼追踪引擎生成的玩家序号
骨骼:骨骼位置数据
上述选项决定了数据流类型及分辨率,如果应用没有在初始化时要求使用深度,后续处理过程将不能打开深度流。