Kinect(幻象)sdk编程指南.docx_第1页
Kinect(幻象)sdk编程指南.docx_第2页
Kinect(幻象)sdk编程指南.docx_第3页
Kinect(幻象)sdk编程指南.docx_第4页
Kinect(幻象)sdk编程指南.docx_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

33编程指南幻象(Kinect)开发入门,源自微软研究院测试版本 1.0 2011年6月16日 关于指南 微软 研究院的幻象(Kinect)开发工具包是用于应用程序开发的入门指南。 在Windows 7操作系统上,使用此开发工具包,让学术研究者和爱好者创建和使用幻象(Kinect)基于Xbox360 传感器技术变得更加容易,更具创造力。微软研究院的测试版本的开发工具包,是用于研究人员和编程爱好者探索自然的用户界面的开发。该工具包包括一个应用程序编程接口(API)和代码示例。要点 微软研究院的幻象(Kinect)开发工具包仅授权于非商业用途。在您同意接受其许可条款的约束下,安装、复制或者其他方式使用该工具包。 阅读许可证。参见 幻象(Kinect)开发工具包的常见问题本指南第一章介绍此开发工具包第二章自然用户界面API(NUI API)的概述第三章音频 API的概述第四章资源声明:此翻译文档是初稿,也是我第一次翻译英文文档.会有诸多翻译不当之处,还请大家指出.再者,我的水平有限,和我个人的理解,文中会出现一些错误或疏漏,恳请广大读者给予批评指正. 有关Kinect,我起名为”幻象”,指在说明该设备的神奇之处. 我个人起的名字和微软无关,我在此声明,微软的版权问题,更我无关啊!我同样希望Kinect(幻象)设备,可以用于更多的地方,让我的生活更加有趣,更加真实,更加好玩!译者:6iloveyouEmail:6免责声明: 本文档所提供的内容, 包括信息和URL以及其他网站的引用,如有改变,不会通知使用者;使用者将承担使用的风险.本文档不提供任何在微软产品知识产权的合法权利.你可以复制和内部参考使用该文档. 2011 微软公司. 保留所有权利.微软的DirectShow, Direct3D, DirectX, Kinect(幻象), MSDN, Visual Studio, Win32, Windows, Windows Media, Windows Vista, and Xbox 360 都是微软公司的注册商标. 所有其他商标归拥有者所有.目录第一部分认识该SDK Beta4欢迎使用4系统要求4开发所需技能5下载和安装该 SDK Beta6加载微软的 Kinect(幻象)硬件6配置开发环境7实现一个托管的应用程序8实现一个 C+ 应用程序8试验自然用户界面(NUI) 和Kinect(幻象)传感器9试验时注意保护你的Kinect(幻象)传感器9试验该Beta版的开发工具包11理解 Kinect(幻象)传感器是怎样工作的12Beta 版测试建议12该 SDK Beta中的样例12第二部分自然用户界面(NUI) API的概述14Kinect(幻象)的体系结构14自然用户界面(NUI) API15自然用户界面(NUI) API的初始化15传感器的枚举及访问16初始化选项17自然用户界面(NUI)的图像数据流的概述17彩色图像数据: 质量 格式和宽度17深度数据18使用者的分段数据18图像信息检索19自然用户界面(NUI)骨骼跟踪20检索骨骼信息20主动和被动骨骼跟踪21自然用户界面(NUI)的转换22图像空间深度22骨骼空间22传感器列表和倾斜补偿23地面测量23骨骼镜像24第三部分音频( Audio) API的概述25关于Kinect(幻象)麦克风25Kinect(幻象) SDK C+ 音频(Audio) API26捕捉原始音频26Kinect(幻象)的音频数据流26Kinect(幻象) SDK 操作音频( Audio) API27怎样利用Kinect(幻象)的麦克风来使用 语音识别27第四部分资源28故障排除要点28Kinect(幻象)和自然用户界面(NUI)的相关术语29参考文献30附录31使用 Visual Studio Express怎样建立一个应用程序31第一部分介绍该 SDK Beta欢迎使用微软研究院提供为Windows 开发者的Kinect(幻象)SDK Beta 开发工具,这只是个开始. 在Windows 7操作系统上,使用此开发工具包,让学术研究者和爱好者创建和使用 Kinect(幻象)传感器技术变得更加容易,更具创造力。.Kinect(幻象)用于Windows SDK Beta 包括有: 驱动程序,使用 Kinect(幻象)传感器设备在Windows 7操作系统的电脑上. APIs 和设备接口,以及开发人员所需的技术文档. 样例源代码.系统要求你要运行这些建立在Kinect(幻象)Windows SDK Beta应用程序,需要建一个本地的运行环境.不能再虚拟设备上运行该应用程序,只有将微软的Kinect(幻象)驱动和SDK Beta 安装后才能运行应用程序.所支持的操作系统和架构 Windows 7操作系统 (x86 or x64)硬件要求 计算机具备双核, 2.66-GHz或更快的处理器 Windows 7图形兼容支持微软的 DirectX 9.0c 能力 2 GB 内存 Kinect(幻象)传感器设备零售版, 包括USB/电源线 软件要求 Microsoft Visual Studio 2010 预览版或者其他 Visual Studio 2010 发行版 Microsoft .NET Framework 4.0 (安装在 Visual Studio 2010) 对于C+开发者要浏览骨骼样例需要: DirectX Software Development Kit, June 2010 或最新版 DirectX End-User Runtime Web Installer 对于语音识别样例 (x86 only): Microsoft Speech Platform - Server Runtime, version 10.2 (x86 edition) Microsoft Speech Platform - Software Development Kit, version 10.2 (x86 edition) Kinect for Windows Runtime Language Pack, version 0.9 (微软语音平台为Kinect(幻象) Windows SDK Beta提供的声学模型)开发者所需技能你可以根据自己编程兴趣使用该 SDK Beta. 该 SDK Beta专门为计算机科学家和学术研究者用于科研方面使用的,但同样提供给那些用于创造性的基于Kinect(幻象)传感器及相关技术的爱好者 探索有关自然用户界面(NUI).试验 Kinect(幻象)和自然用户界面(NUI)该SDK Beta 具有以下这些试验特点: 在Kinect(幻象)传感器视野范围内,骨骼跟踪一个或两个人的移动图像. XYZ深度摄像头用于访问标准色彩摄像留加上深度数据来表示移动对象在Kinect(幻象)传感器之间的距离. 音频处理是通过四个麦克风进行噪音和回声的消除,在加上播送,来确定当前的声源,并Microsoft.Speech 语音识别API集成.相关概念和编程方法在该编程指南中有涉及到.应用程序开发要掌握该 SDK Beta的相关功能和使用,开发者应熟悉以下内容: 开发环境与开发语言 Visual Studio 2010要使用运行该 SDK 的样例和利用 SDK开发自己的应用程序,你可以使用Visual Studio C# 2010 Express, Visual Studio C+ 2010 Express, 或者其他版本的 Visual Studio 2010. Visual Studio Express 是免费的,可以从微软的网站上下载.假如你想使用最新的 Visual Studio, 可参考 Visual Studio 2010 使用指南. C# 或 C+ 样例用 C# and C+开发都是可以的.有关这些编程语言的相关信息,可参考 Visual C# 开发人员中心 and Visual C+ 开发人员中心. 在 Windows 7系统开发应用程序该 SDK Beta 可以在Windows 7系统上更好的体现SDK的功能和特性.如果你的初级的Windows 开发者,可参考 成为Windows 开发学习中心.注意 该SDK不能用于开发者开发基于 Xbox 360 的应用程序.因为在Xbox 360 和Windows之间有许多功能和特性的差异.这些差异会影响到Kinect(幻象)在Windows 7的运行.所以说,要设计和实施应用程序要在两个不同的平台上.微软建议使用Xbox 360 开发工具包 (XDK 硬件和软件) 开发 Xbox 360 应用程序下载和安装SDK Beta这部分描述了怎样在Windows 上安装SDK Beta 和配置Kinect(幻象)传感器.你需要下载和安装SDK Beta在你想要建立和运行的应用程序的Windows系统上使用Kinect(幻象)传感器.准备安装 Kinect(幻象) Windows SDK Beta1.从微软网站上获得最新的Windows 7版本.2.确保Kinect(幻象)设备没有插在你电脑的USB接口.3.删除你以前安装的有关 Kinect(幻象)设备的驱动,包括早期版本微软Kinect(幻象)驱动或者其他有关驱动. 这样做: 在控制面板中找到程序选项中的以前的驱动名称点击卸载. 如果列表中没有改驱动,就安装说明删除与之相关的驱动.注意 假如你的PC电脑上安装了其他有关 Kinect(幻象)设备的 驱动, 微软的Kinect(幻象)驱动可能就不能正确安装和正常使用了.4.确保你的电脑上安装了所必须的软件,正如前面描述 的“系统要求.”5.在安装该SDK Beta 前关闭Visual Studio.注意 确保该MSRKINECTSDK 环境变量在正确的设置,让该 SDK Beta正确的配置,你需要在安装 Visual Studio 后退出然后重新启动后再安装.获得和安装 Kinect (幻象) Windows SDK Beta1.从 Kinect(幻象) Windows SDK Beta 下载网页, 点击 下载选项和你的电脑相符 (x86 or x64).2.启动 SDK 安装, 点击Run. 安装后, 点击Save.3.按照安装提示完成安装.要点 你必须将Kinect(幻象) for Windows SDK Beta安装在PC系统上,这样你才能运行和建立相关的应用程序.加载 微软的Kinect(幻象)驱动Kinect(幻象)传感器是一种物理设备包括摄像头和一组麦克风. 该传感器通过USB连接到PC上,准确的说是一个USB设备. Kinect(幻象)传感器采样标准的USB 接口, 但和标准的USB设备固件有所不同.当你下载好 SDK Beta, 并安装在该微软的Kinect(幻象)驱动.当Microsoft Kinect(幻象)驱动被安装在基于 Windows-based PC上, Kinect(幻象)传感器将作为PC的 USB 多元端口设备.添加 Microsoft Kinect(幻象)驱动1.给你的 Kinect(幻象)传感器电源接上外部电源.2.将 Kinect(幻象)传感器通过USB接口接到PC上,等待Windows 识别传感器组件.3.所有驱动,包括音频,都无缝连接.检验驱动的安装1.你应该可以看到一个闪烁绿色的LED灯,从Kinect(幻象)传感器上.2.在控制面板的设备管理选项中,查看在Microsoft Kinect(幻象)的节点: Microsoft Kinect Audio Array Control(音频节点) Microsoft Kinect Camera(摄像头节点) Microsoft Kinect Device(设备节点)3.在设备管理的音频,视频和游戏的选项上有Kinect (幻象)传感器麦克风列表出现 Kinect USB Audio (USB 音频)要点 你必须安装Kinect (幻象) Windows SDK Beta和同时安装它的驱动程序,在你将Kinect(幻象)设备通过USB接口插入你的电脑前. 假如你在没有安装驱动就插入设备, Microsoft Kinect(幻象) 不会在设备管理中找到.如果有多个Kinect(幻象)传感器,你要确保通过不同的USB正确的连接.配置开发环境Visual Studio Express Edition 给C+ 或 C#开发语言提供了包括你可以编码,调试和测试应用程序的开发环境.这部分内容提供关于配置你为Kinect for Windows SDK Beta的开发环境的内容.要最新的 Visual Studio Express? 你可以使用最新的Visual Studio Express 最为开发环境,下面的信息你可以从MSDN网站上获得相关帮助和得到这些开发工具: 简单介绍怎样配置Visual Studio Express and 然后建立和测试一个新的工程, 参考该附录, “如何构建一个应用程序用Visual Studio Express.” 访问Visual C# 开发者中心 和Visual C+ 开发者中心, 你可以找到样例,视频,和如何帮助你开始.注意事项 使用 Visual Studio 2010 Express或者其他 Visual Studio 2010 edition. 只对于 x86 (Win32) 平台. 要点 不要将x64位的平台的最为开发平台. 该SDK Beta 仅支持x86 应用程序. 32位和64位安装包包括用于x86和x64系统的驱动.所有的应用程序都是指针对于x86平台的. 应用程序使用SDK Beta必须在本地Windows环境下. 你不能在虚拟机上运行应用程序,因为Microsoft Kinect(幻象)驱动和SDK Beta必须安装在电脑上运行这些应用程序.实现一个托管应用程序安装下列基本步骤来实现一个托管应用程序.实现C#应用程序1.参考 Microsoft.Research.Kinect.dll. 此程序集在.NET添加引用对话框可以全局使用. 此 DLL调用非托管函数从托管代码.2.使用命名空间的指令:对于 NUI(自然用户界面) API, 有: using Microsoft.Research.Kinect.Nui对于 Audio API, 有: using Microsoft.Research.Kinect.Audio实现一个C+应用程序下面实现一个非托管的应用程序步骤.实现一个C+应用程序1.不要编译C+工程将w_char 作为一个单独的类型2.使用NUI(自然用户界面) API, 包含MSR_NuiApi.h.位置在: ProgramFilesMicrosoftResearchKinectSDKinc3.使用Kinect(幻象) Audio API, 包含MSRKinectAudio.h.位置: ProgramFilesMicrosoftResearch KinectSDKinc4.连接MSRKinectNUI.lib文件.位置: Program FilesMicrosoft Research KinectSDKlib 5.确保Kinect(幻象) SDK DLLs 在正确的路径上,当你运行项目时.位置: ProgramFilesMicrosoft Research KinectSDK将下面的表描述的文件放在你的项目中.在 .Program Files (x86)Microsoft Research KinectSDKincMSR_NuiApi.h包含所有的NUI(自然用户界面) API头文件和定义初始化和访问入口NuiInitialize, NuiShutdown, MSR_NuiXxx, and INuiInstance: 枚举设备 访问多个设备 MSR_NuiImageCamera.h定义了NUI(自然用户界面)图像和摄像头服务的APINuiCameraXxx and NuiImageXxx: 调整摄像头的角度和仰角 打开数据流和读取图像帧 MSR_NuiProps.h定义了NUI(自然用户界面)的 APIs属性枚举.MSR_NuiSkeleton.h定义NUI(自然用户界面)骨骼APINuiSkeletonXxx and NuiTransformXxx: 开启/禁止骨骼跟踪 获得骨骼数据 转换骨骼数据 MSRKinectAudio.h定义音频API,包括ISoundSourceLocalizer接口用于返回光源的方向和音频的位置. NuiImageBuffer.h定义类似于DirectX 9的帧缓冲区.试验 NUI(自然用户界面)和Kinect(幻象)传感器该 SDK Beta作为那些基于windows电脑和采用Kinect(幻象)作为输入设备来开发应用程序的开发人员的指南. 很多早期的使用者都渴望将Kinect(幻象)传感器设备用于探索自然用户界面 (NUI).该SDK 不能用于消费使用即不能在没有获得许可的情况下用于商业用途.在实验室或者教室来使用,试验此SDK.该指南提供以下简要说明来帮助你快速入门: 试验这个开发套件. 使用时保护你的Kinect(幻象)传感器. 了解Kinect(幻象)传感器阵列的范围和解决方案.反馈 微软团队提供早期的SDK Beta ,和希望得到那些在使用Kincet(幻象)设备在windows 开发环境开发和使用情况. 在你使用该SDK Beta 时,请在开发者论坛上提供你有关的试验和研究反馈.保护你的 Kinect(幻象)传感器在你试验时下面的提示是关于你在使用该SDK Beta 时该如何保护你的Kinect(幻象)设备.独立传感器 使用外部电源给Kincet(幻象)设备供电. 仅仅使用USB 接口供电,只能提供LED灯的使用. 不管怎样在传感器使用外部电源才能充分发挥其功能. 不需要工具来校准音频和视频.风扇控制避免过热 Kinect(幻象)传感器要避免避免风扇过热.这由传感器硬件控制,当温度在90摄氏度左右时关闭摄像头. 没有软件接口来控制风扇.控制传感器 所有控制Kinect(幻象)传感器的APIs(有SDK Beta提供)都是可以的,.注意 如果你使用其他方式来控制Kinect(幻象)传感器,传感器可能会受到不可恢复的破坏. 传感器阵列倾斜机制不应该频繁使用.你的代码不应在每秒一次或者每20s15次改变摄像头的角度. 警告 你要尽可能少的倾斜Kinect(幻象)传感器,以减少磨损和损害传感器. 摄像头不适用于重复性运动,如果这样可能会导致运动功能的退化.该SDK限制倾斜速率,来保护Kinect(幻象)硬件. 假如应用程序尝试频繁倾斜传感器,运行时加一个锁,调用时会返回一个错误码.传感器放置当你在Windows PC上使用Kinect(幻象)传感器时,要确保将传感器放置在一个水平的表面上(不会意外下降或者被击中).另外: 不要将传感器放置在扬声器或者制造噪音的物体前面. 不要让阳光直射传感器. 不要让传感器接近任何热源. 使用传感器在华氏温度在41-95之间(5-35摄氏度). 如果传感器的温度环境不在该范围(5-35摄氏度),要关闭传感器,当温度适宜时再使用传感器.注意 仅通过移动基座来调整传感器位置.不要用手调整传感器视图角度.安装完成后让传感器电机来调整视图角度,避免损害传感器的风险.Kinect(幻象)传感器阵列范围这一代的Kinect(幻象)传感器专门为游戏和类似情景而设计的. 在你试验Kinect(传感器)和 NUI(自然用户界面)类似情景,记得下面的内容: 只适用于常规方案 该SDK Beta只适用于站立时的解决方案,不是坐着. 范围 = 4 to 11 Feet 对于深度数据和骨骼图像,适用范围为距离传感器4到11步.要点 在你使用传感器时,如果你站的位置离传感器太近,显示的结果可能会是空的或者嘈杂的图像.Kinect(幻象)传感器范围和传感器阵列规格如下表所示.Windows Kinect(幻象)传感器可播放范围传感器条目播放范围色彩和深度流4 到 11.5英尺 (1.2 到3.5米) 骨骼跟踪4 到11.5 feet (1.2 到3.5 米) Kinect(幻象)传感器阵列规格传感器条目规格范围可视角度43 垂直方向和 57水平方向可视范围机械化倾斜范围 (垂直方向)28 帧率 (深度和色彩流)30帧每秒 (FPS)分辨率, 深度流QVGA (320 240) 分辨率,色彩流VGA (640 480) 音频格式16-kHz, 16-bit 单声道 (PCM)音频输入特性四个带有24位的数字模拟信号(ADC)和消除和处理噪声的麦克风阵列 试验该测试版的开发工具包为早期开发和使用者,该SDK Beta 提供了下面的基础内容: 有Microsoft Kinect(幻象)驱动和SDK的APIs提供了简单易用的程序接口. APIs在Windows环境下用来控制音频和视频数据流以及骨骼跟踪的. 多种媒体流通过视频的方式;使用最少的cpu和硬件设备. Kinect(幻象)传感器设备专门为Xbox 360在客厅娱乐应用的设计的. 该 SDK Beta用于在PC上开发Kinect(幻象)传感器设备应用程序,不会改变其物理设计和传感器的能力.该 SDK Beta 是基于 Xbox 360 软件的, 不是简单的描述软件从一个计算环境到另一个. 在Xbox 360 和 Windows之间有许多物理,性能及行为特性都有差异.这些不同会影响Windows如何支持Kinect(幻象)技术的实现. 总之,设计方法和性能特点在两个平台之间是恨不同的. 例如,Kincect(幻象)音频解决方案在windows 上完全不同于Xbox 360平台上的解决方案的. 为支持四个麦克风阵列在windows 7上内置了音频扩展的能力. 这部分提供的一些技术资料和参考建议用于软件开发.理解Kinect(幻象)传感器是怎么工作的 Microsoft Kinect(幻象)传感器的开发和优化在Xbox 360游戏机上工作. Kinect(幻象)硬件和固件没有为windows 平台重新设计.因为Kinect(幻象)传感器全新的,不能在windows环境下支持,要考虑以下内容: 这个Kinect(幻象)传感器多功能设备不是采用标准的USB接口.因此: Windows即插即用的功能不可用. Windows 电源管理不可用.因此,你的系统可能处于睡眠或者意外删除设备状态. Kinect(幻象)传感器具有深度摄像头,多个麦克风阵列和其他独一无二的功能.在你使用时,你可能感觉不真实.在你进行输入和输出试验时,参考阅读更多有关Kinect(幻象)传感器的功能.要了解其技术背景信息,在指南的资源里面查找. 测试Beta建议 当你使用该SDK时,要记住这几点: 记住这几点有助于你专注于你开发和调试你的应用程序: 不要将Kinect(幻象)设备通过USB接口与其他设备共享. 当你进行Kinect(幻象)应用程序时,断开其他USB媒体设备. 避免运行其他软件和驱动来测试该SDK Beta. 该 SDK Beta以下内容还没有测试: 与其他SDKs或者框架,比如XNA Game Studio结合开发. 与其他应用程序进行多媒体功能操作,如VOIP操作样例在SDK Beta该 Windows for Kinect SDK Beta包括一些样例程序来帮助你试验Kinect(幻象)传感器设备在Windows电脑上.这些样例演示了NUI(自然用户界面)的基础特性和 编码技术,以及提供如何使用探索该SDK Beta的基本概念. 这些样例安装在UsersPublicDocumentsMicrosoft Research KinectSDK Samples folder文件夹下.详细演示文档在SDK Beta 网站上可以找到,包括:SkeletalViewer(骨骼视图)演示使用NUI(自然用户界面)API来捕捉数据 (C+ and C#)从Kinect(幻象)传感器深度和视频摄像头上,使用NUI(自然用户界面) API来访问和渲染数据为深度,视频以及在屏幕上的骨骼图像.托管该SkeletalViewer样例采用Windows Presentation Foundation (WPF) 呈现捕捉到的图像和本机使用 DirectX 和 Windows 图像显示接口 (GDI).AudioCaptureRaw(音频捕捉原始数据)演示捕捉原始音频流 (C+)使用 Windows Audio Session API (WASAPI) 从Kinect(幻象)传感器四个麦克风阵列中捕捉原始音频流和写入到一个a .wav文件中 .MFAudioFilter(音频过滤)演示捕捉一个基础的流媒体过滤器 (C+)演示了如何捕捉音频流从 Kinect (幻象)传感器麦克风阵列中,使用 KinectAudio DirectX Media Object (DMO) 在 Windows Media Foundation topology的过滤器模式.阵列回声消除演示捕捉音频流使用回声消除和声波形成(C+)演示了如何使用 KinectAudio DMO 作为 DirectShow 访问 Kinect(幻象)传感器麦克风阵列的接口的. 本样例使用回声消除来记录高质量的音频流和波束以及声源位置来确定选择的束和声源方向.录制音频演示记录音频流和检测方向 (C#)演示如何捕捉Kinect(幻象)传感器麦克风阵列的音频流和检测选定束和声源方向.语音演示认识声音命令 (C#)演示如何使用Kinect(幻象)传感器的麦克风阵列Microsoft.Speech API认识声音命令.第二部分NUI(自然用户界面) API:概述Kinect(幻象)在 Windows上的体系结构Kinect(幻象) for Windows SDK Beta提供了先进的软件库和开发工具来帮助开发人员基于自然输入,传感以及反映现实世界的事件开发更加丰富的内容.Kinect(幻象)传感器和相关软件库与你的应用程序的交互, 如图1所示.图 1.Hardware and software interaction with an applicationKinect(幻象)组件由图2所示.图 2. Kinect for Windows SDK Beta architectureKinect(幻象)组件由图2显示有以下内容:1.Kinect(幻象)硬件硬件组件:通过Kinect(幻象)传感器和USB集线器,设备连接到电脑上.2.Microsoft Kinect(幻象)驱动Windows 7 驱动安装SDK Beta时也将驱动安装了. Microsoft Kinect驱动支持: Kinect(幻象)传感器麦克风阵列可以作为一个核心的音频设备,你可以通过它来访问标准的音频APIs在Windows电脑上. 图像流和深度数据. 设备枚举功能可以使应用程序连接多个Kinect(幻象)传感器设备连接到电脑上.3.NUI(自然用户界面) API一组 APIs用来接收图像数据和控制Kinect(幻象)设备.4.KinectAudio DMOKinect(幻象) DMO 用来扩展在windows 7上的麦克风阵列的波束形成和定位声源位置.5.Windows 7 标准 APIs在Windows 7上的音频,语音,多媒体APIs 可以从Windows 7 SDK 和 Microsoft Speech SDK找到相关描述.NUI(自然用户界面) APINUI(自然用户界面) API是Kinect(幻象)核心API. 它支持基本的图像和管理设备的功能,包括以下内容: 访问Kinect(幻象)传感器连接到电脑上. 从Kincet(幻象)图像传感器上访问到图像和深度数据流. 通过对图像和深度数据的处理来进行骨骼跟踪.注意 该SDK Beta 包括 C+和 C# 两个版本的SkeletalViewer 样例. SkeletalViewer 展示了如何在应用程序中使用NUI(自然用户界面)API去捕获数据流,使用骨骼图像和处理传感器数据.要知道更多信息,参考“Skeletal Viewer Walkthrough” 从SDK Beta 的网站上.NUI(自然用户界面) API的初始化Microsoft Kinect(幻象)驱动支持多个Kinect(幻象)设备在一台电脑上. NUI(自然用户界面) API具有枚举设备的函数,用来决定有多少个设备可以连接到电脑上,获得设备的名称,单独使用和设置其属性.尽管SDK Beta可以支持多个Kinect(幻象)传感器设备使用,但只有一个应用程序可以在每个传感器中使用. 传感器枚举和访问 在C+和托管代码应用程序中枚举Kinect(幻象)设备的数量,以及初始化NUI(自然用户界面)API;用以下方法:在C+应用程序中初始化NUI(自然用户界面) API和使用Kinect(幻象)传感器如果应用程序只用到一个Kinect(幻象)传感器:1.调用 NuiInitialize. 该函数用于初始化第一个Kincet(幻象)传感器设备实例. 2.调用其他的 NuiXxx 函数来获取图像流和骨骼数据和管理摄像头.3.完成设备实例后调用 NuiShutdown 方法.如果应用程序使用多个传感器设备:1.调用 MSR_NuiDeviceCount 方法来决定有多少个传感器设备可用. 2.调用 MSR_NuiCreateInstanceByIndex 方法来为每个设备创建一个实例提供应用程序使用.该函数返回一个INuiInstance 接口指针.3.调用 INuiInstance:NuiInitialize 方法初始化传感器设备的NUI(自然用户界面) API. 4.调用其他方法使用INuiInstance 接口来获取图像流,骨骼数据和管理摄像头.5.当完成设备实例后调用 INuiInstance:NuiShutdown来关闭NUI(自然用户界面) API.6.调用 MSR_NuiDestroyInstance 来销毁实例. 在管理C#代码中,初始化 NUI(自然用户界面) API 和使用 Kinect(幻象)传感器如果应用程序只使用一个传感器:1.创建一个新的 Runtime 对象和传递一个参数,下面是C#代码:nui = new Runtime();这个构造函数创建一个对象,代表了系统上Kincet(幻象)传感器设备的一个实例. 2.Call Runtime.Initialize to initialize the NUI API for the sensor.3在管理界面调用图像流,骨骼数据和管理摄像头等方法.4.完成设备实例调用 Runtime.Shutdown.如果应用程序使用多个传感器:1.调用 MSR_NuiDeviceCount 方法来决定有多少个传感器可以显示. 2.创建一个新的 Runtime 对象和传递一个参数,下面是C#代码:nui = new Runtime(index);这个构造函数创建一个对象,代表了系统上Kincet(幻象)传感器设备的一个实例. 3.调用 Runtime.Initialize 方法来初始化设备实例的NUI(自然用户界面) API.4在管理界面调用图像流,骨骼数据和管理摄像头等方法.5.完成设备实例调用 Runtime.Shutdown.初始化选项NUI(自然用户界面) API处理来自Kincet(幻象)传感器 数据通过多级方式.在初始化时,应用程序指定它所需的子系统部分,这样在运行时可以从要求的部分开始.一个应用程序可以选择一个或多个下列选项: 色彩. 来自传感器的色彩图像数据. 深度. 来自传感器的深度图像数据. 深度和游戏者的索引. 来自传感器深度图像数据和要求游戏者索引启动骨骼跟踪引擎. 骨骼. 应用程序使用骨骼点数据. 这些选项决定了应用程序的有效数据流类型和解决方案.例如,假如一个应用程序没有在初始化NUI(自然用户界面) API时使用深度,那么应用程序就不能启用深度流. NUI(自然用户界面)图像数据流:概述NUI(自然用户界面) API提供修改Kincet(幻象)传感器阵列的设置,使你可以访问到图像数据.数据流作为一种静止的图像帧.在初始化 NUI(自然用户界面)时,应用程序将为流记上标示符.然后打开数据流,包括流分辨率,图像类型和用来储存数据流的缓冲区.假如运行时缓冲区填满之前,应用程序应该调用释放缓冲区的引擎.如果不这样,帧数据可能就会丢失.一个应用程序可以有四个缓冲区,两个是充分使用的.一个应用程序从传感器阵列中访问下列图像数据: 色彩数据 深度数据 游戏者分段数据彩色图像数据: 质量,格式和带宽彩色图像数据有两种质量水平和两种不同格式: 质量的高低决定数据从Kinect(幻象)传感器发送到PC机上的速度的快慢. 图像格式的选择决定了图像数据返回给应用程序代码的编码格式是RGB编码还是 YUV编码.图像质量和带宽 传感器阵列通过USB接口给PC机发送数据,以及提供数据的带宽.选择合适的图像数据质量通过调整带宽数据.高质量的图像需要每帧发送更多的数据流和更新频率较低,定期更新一些高质量的图像,防止压缩的损失: Bayer彩色数据定期的在传感器传送数据之前先将数据压缩和转换为RGB格式.这样做可以使传送的数据到达每秒30帧,但是该算法有可能使图像失帧. 要获取高质量,没有经过的压缩的数据,那么传送的速率就不会超过每秒15帧.因为数据没有经过压缩,NUI系统需要分别较大的缓冲区.因此,你需要决定你需要那种形式的彩色数据,告诉低质量或者高质量低传输速率.格式 色彩数据可用下面格式: RGB color 提供 32-bit, 线性 X8R8G8B8-formatted color 位图. 要使用RGB格式数据,应用程序应该指定彩色类型. YUV color 提供 16-bit, 校正线性 UYVY-formatted color 位图, 由于使用YUV格式数据,该流每帧的像素为16位,只占用较少的内存和缓冲区. YUV数据只在640x480分辨率使,帧率为15帧每秒.这两种格式来自同一个摄像头数据,因此YUV数据和RGB数据代表同一个图像.选择任意一种格式在你实施应用程序时.深度数据深度数据流提供每帧13比特,以毫米为单位,以x,y轴来定视图的范围 下面的深度数据流可用: 分辨率 640480 pixels 分辨率 320240 pixels 分辨率 8060 pixels应用程序可以处理深度数据流,支持自定义功能,比如跟踪用户的动作或者忽略掉背景.使用者的分段数据在 Kinect for Windows SDK Beta中, Kinect(幻象)系统处理传感器数据是通过描述两个人的肢体并创建游戏者的分段图. 该图是位图,如摄像头里的人物图像.尽管游戏者分段数据是单独的数据流,但实践中的深度数据和游戏者的分段数据在同一个框架中: 每个像素的高13位代表从深度摄像头到最近的对象的距离,以毫米为单位. 低3位字节表示被跟踪的游戏者的索引x和y轴位置.这些比特位为整数值不作标志位.游戏者索引值为零说明没有找到游戏者的位置.值为1和2来表明游戏者和确定其位置.应用程序使用游戏者的分段数据来分离游戏者和视图区域,原始色彩图像和深度图像.图像信息检索应用程序代码获取最新的图像帧数据通过调用索引方法和建立缓冲区.当最新的帧数据准备好,就会被复制到缓冲区中.如果你的代码要求的速度大于帧数据准备的速度,你可以选择等待下一个帧数据的触发. NUI(自然用户界面)图像摄像头 API不同提供相同的数据在同一个帧数据中.应用程序可以使用下面两种模式: Polling Model(查询模型) 查询模型是最简单的读取帧数据的方法. 首先,应用程序代码要求返回指定多久等待下一个帧 (在 0 和毫秒之间).请求返回当新的帧数据准备或者等待时间.简言之,先到者,先被调用.指定一个无限等待线程, 只要有新的帧数据来了就调用. 当返回成功,新的帧数据就会被准备好.假如超时就会被置零,应用程序代码完成查询帧数据,就会执行其他工作在同一个线程内.一个 C+ 应用程序通过调用 NuiImageGetNextFrame 查询色彩和深度帧. 托管代码托管调用 ImageStream.GetNextFrame. Event Model(事件模型) 事件模型在应用程序中具有更大的灵活性和更准确的支持检索骨骼. 在这个模型中, C+ 应用程序代码传递event handle 给 NuiImageStreamOpen. 当一组新的帧数据准备好,该事件就会被标记.等待线程被唤醒来得到骨骼数据通过调用NuiImageGetNextFrame. 在此之间,事件会通过NUI(自然用户界面)图像摄像头( Image Camera) API来重置.托管代码使用的事件模型是通过调用Runtime.DepthFrameReady 或Runtime.ImageFrameReady event处理适当的事件.当一组新的帧数据准备好时,事件 是通过调用ImageStream.GetNextFrame 来获取帧数据.NUI(自然用户界面)骨骼跟踪NUI(自然用户界面)骨骼 API提供关于游戏者离Kinect(幻象)传感器的位置信息,详细的位置和方向信息.这些提供给应用程序的数据是一组点,成为骨骼位置,简称骨架,如图3. 骨架代表了用户当前的位置和构成.应用程序可以使用骨骼信息来初始化NUI(自然用户界面)和跟踪骨骼.Figure 3.人体骨骼关键点Skeleton joint positions relative to the human body骨骼信息检索应用程序获取最新的骨骼帧数据以同样的方式获取图像数据: 通过调用帧检索方法和创建缓冲区.应用程序可以查询模型或者模型事件,同理与图像帧.应用程序必须选择一个模型或其他的,它不能同时选择. 使用查询模型: 一个本地的C+ 应用程序通过调用 NuiSkeletonGetNextFrame 检索骨骼帧. 托管代码则调用 SkeletonEngine.GetNextFrame.使用事件模型: C+ 应用程序代码发送一个事件句柄给 NuiSkeletonTrackingEnable. 当心的骨骼信息来了,该事件就会被标记好.任何等待线程就会被唤醒来获取骨骼帧数据通过调用NuiSkeletonGetNextFrame. 同时,该事件会被NUI(自然用户界面)API重置. 托管代码使用该事件模型是通过钩用Runtime.SkeletonFrameReady 事件来处理适当的句柄.但新的骨骼数据准备好,该事件就会标记和调用SkeletonEngine.GetNextFrame 来获取该帧.骨骼跟踪引擎通过处理深度帧数据来计算重力和水平面,在稍后的 “Sensor Array and Tilt Compensation,” 的文档中有所描述.如果应用程序在初始化时使用骨骼跟踪,该引擎会获取和处理深度数据,判断是否有骨骼出现在帧数据中.应用程序通过重力和水平面来检索骨骼帧.返回的骨骼帧,包括深度数据和骨骼图像数据. 主动和被动骨骼跟踪骨骼跟踪引擎提供一个或者两个游戏者在传感器视野范围内完整的骨骼跟踪.当游戏者启用主动跟踪,引擎就会调用下一组骨骼帧,当完成上一组数据的时候.被动跟踪提供最多4个游戏者相关的有限的信息,如游戏者的位置.默认情况下,这两种引擎都可以使用,如图4.Figure 4.Active tracking for two players(主动跟踪两个游戏者的图像)在骨骼帧中运行时返回的骨骼数据,是一组骨骼数据,每个数据是让骨骼跟踪系统识别.不是每个骨骼帧中都还有骨骼数据.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论