【Kinect for Windows SDK MSDN文档翻译】之一

2023-12-29 00:40

本文主要是介绍【Kinect for Windows SDK MSDN文档翻译】之一,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Kinect for Windows SDK DOC

本章由cowboylym(酒劍仙采葡萄)编写,转载请注明出处。 

作者:酒劍仙采葡萄    邮箱: cowboylym@163.com   


Kinect for windows SDK 为我们在windows平台上开发Kinect应用程序提供了 工具和API。翻译它的技术文档一方面是巩固自己的所学,另一方面是方便自己以后再回过头来翻阅,顺便锻炼下自己的英语水平 作为一个优秀的程序员 有一个好的英语基础很重要的。 首先声明我的英语水平有限,在翻译中难免会有纰漏,请大家一定要及时指正。由于官方文档包含的方面比较多,而我主要对跟程序开发相关的部分着重进行翻译。环境搭建和Kinect硬件说明部分 我就略带而过了。 英语水平好的还是建议看原版文档。原文地址:http://msdn.microsoft.com/en-us/library/hh855347.aspx

人门(Getting Started)

一、系统要求(System Requirements


 支持的操作系统和架构

Windows7

Windows8

Windows Embedded Standard 7(嵌入式win7系统)

Windows Embedded Standard 8(嵌入式win8系统)

Windows 7 N or 7 KN 版需安装 Media Feature Pack

 

硬件要求

32位或者64位处理器

双核 2.66Hz 以上的处理器

USB 2.0总线

2GB的RAM

显卡支持DirectX 9,0c

一台Kinect for window 传感器

 

软件要求

软件开发环境vs2010 或者vs2012

.NETFramework 4或者4.5

 

语音识别的例子还需要

 MicrosoftSpeech Platform Software Development Kit (Version 11), if you needto compile the samples.

MicrosoftSpeech Platform Runtime (Version 11), which is automaticallyinstalled as part of the Kinect runtime setup, if you want to run the samplesonly.

 

Depth-D3D和DepthWithColor-D3D例子还需要

DirectXSoftware Development Kit, if you need to compile the samples.

DirectX End-UserRuntimes (June 2010) if you want to run the samples only.



编程指南(Programming Guide)

SDK包含以下内容

1、Kinect驱动程序

2、Kinect应用程序开发所需的技术文档

3、API文档

4、示例代码

 

 

 

一、Kinect for windowsArchitecture (SDK架构)

 

SDK提供了一个复杂的软件库和工具来帮助开发人员使用丰富的基于kinect的自然输入(对真实世界事件的响应)。Kinect和软件库与你的应用程序之间的交互如图1所示。


图1

 

SDK的组件内容如下图:


图2

这些组件包括:

1、  Kinect硬件:包括Kinect传感器、USB总线。

2、  Kinect驱动

3、  音频视频组件

4、  DirectXMedia Object(DMO)

5、  Win7标准API

 

二、Kinect传感器

Kinect传感器包括 1个摄像机、1个麦克风阵列和1个加速剂以及1个处理颜色、深度和骨骼数据的软件管线。

 

2.1 传感器组件和产品规格

组件:

        1个1280x960的RGB摄像头

        1个红外发射器和1个红外深度传感器

        1个麦克风阵列

        1个3条坐标轴(x,y,z)的加速度计


Kinect产品规格:

视角:垂直43°水平57°

垂直倾斜范围:±27°

帧数:30FPS

音频格式:16kHz,24位的单脉冲编码调制方式(PCM)

音频输入特性:1个24位模数转换(ADC)的麦克风阵列和Kinect固有信号的处理包括:回声消除和降噪

加速计特性:1个2G/4G/8G的加速度计 配置有2G的范围,拥有精确度1°的上限

 

2.2设置Kinect传感器

       步骤1:将传感器安装到一个稳定的平面上

       将Kinect放在一个稳定的平面上并且使用时不要受到撞击。

1)  不要将Kinect放在扬声器前面,不要放在一个振动的或者会制造噪音的表面上。

2)  避免让Kinect受到阳光的直射。

3)  在Kinect指定的操作温度(41~95℉ 5~35℃)下使用。如果超出了这个范围 请关闭Kinect并且将温度稳定在规定温度范围内,在你再一次使用这个传感器之前。

4)  不要在Kinect基座上倾斜它,手动倾斜Kinect会损坏传感器,Kinect倾斜角由软件控制。

步骤2:安装SDK 下载地址http://www.microsoft.com/en-us/kinectforwindows/Develop/Developer-Downloads.aspx

步骤3:插上Kinect传感器

1)  接上电源

2)  将Kinect的USB接口接上PC等待Windows识别

3)  所有驱动包括音频驱动将会被无缝加载


2.3 遍历并初始化Kinect

概括:

Kinect forwindows 驱动支持在一台电脑上使用多个Kinect传感器。API中包含了遍历Kinect的方法,所以我们可以决定在电脑上连接几台Kinect。获取一个指定的Kinect传感器名字并设置每个传感器的数据流特性。当找到一个已经连接的传感器时,我们需要让任意一个或者所有的数据流(颜色、深度和骨骼数据)使能,接着启动传感器产生数据流。

 

代码段:

遍历Kinect传感器

使用KinectSensor类来遍历连接到电脑的Kinect传感器。当你声明sensor成员时,静态的KinectSensors属性已经被你系统上的Kinect集合所填充。由于属性是静态的,所以Kinect集合在程序运行时一直是可用的。

private KinectSensor sensor;foreach (var potentialSensor in KinectSensor.KinectSensors){if (potentialSensor.Status == KinectStatus.Connected){this.sensor = potentialSensor;break;}}

循环遍历Kinect集合通过KinectStatus判断每个Kinect是否已经连接。一旦找到连接成功的Kinect,将其保存到sensor成员,那么你就可以在下面的代码中使用它。

 

数据流使能

当遍历完所有的传感器并找到一个成功连接的传感器时,下一步就是将输出的数据流使能。这里有几种类型的数据流。颜色、深度、骨骼和红外线。下面的例子将演示如何使能所有数据流。

        if (this.sensor != null){this.sensor.ColorStream.Enable(ColorImageFormat.RgbResolution640x480Fps30);this.sensor.DepthStream.Enable(DepthImageFormat.Resolution640x480Fps30);this.sensor.SkeletonStream.Enable();this.sensor.ColorStream.Enable(ColorImageFormat.InfraredResolution640x480Fps30);}

对于颜色数据:KinectSensor类包含ColorStream属性用于访问ColorImageStream类。调用Enable方法使Kinect通过初始化图像数据格式(帧数,分辨率)来产生颜色数据。每个有效数据都包含在ColorImageFormat枚举类型中。默认的值为RgbResolution640x480Fps30。这表示Kinect将输出一个分辨率为640x480,帧数为30帧的RGB数据。

若使用 InfraredResolution640x480Fps30 则输出红外数据

 

对于深度数据:KinectSensor类包含DepthStream属性用于访问 ColorImageStream 类。调用Enable方法使Kinect通过初始化图像数据格式(帧数,分辨率)来产生颜色数据。每个有效数据都包含在DepthImageFormat枚举类型中。默认的值为RgbResolution640x480

Fps30。这表示Kinect将输出一个分辨率为640x480,帧数为30帧的RGB数据。

 

对于骨骼数据:KinectSensor类包含一个SkeletonStream属性用来访问SkeletonStream类。调用Enable方法使Kinect产生骨骼数据。

 

启动Kinect

当你选择了一个成功连接的传感器,并初始化数据流之后,调用Start方法启动输出数据流。

if (this.sensor != null){this.sensor.Start();}


2.4在非开发人员的机器上运行Kinect应用程序

 

安装Kinect运行时库

Kinect应用程序的安装程序应该安装它的依赖项,包括Kinect运行时库的安装。Kinect运行时库安装程序将会安装Kinect驱动和Kinect运行时库。

 

Kinect运行时库安装程序放在SDK的\Redist 子目录下面,它是一个自行安装的可执行程序,安装所有需要的运行时软件。包括驱动,Kinect运行时库和语音识别运行时库。英文以外的其他语音模型,可以在它们各自的安装程序中找到。你应该根据自己的应用程序需要,附带安装其他的语音模型。

 

给最终用户提供指导

Kinect需要给根据KinectStatus枚举类型的提供的不同状态响应的给最终用户提供正确的提示信息。

 

你需要一台Kinect

当程序无法检测到Kinect时,UI界面就会提示如下信息


在你插上Kinect之前这条提示信息会一直显示。

 

插上Kinecct

当Windows检测到一个Kinect插上之后。将会出现如下提示信息


初始化时,windows会发现和列举出合适的驱动供Kinect初始化

 

Kinect准备完毕

将提示如下信息

 

 

这里有一张KinectSensorChooser 提供的最常见的状态信息列表

KinectStatus

Message

Details on hover over "Tell me more"

More Information

Disconnected (with IsRequired==true)

"Required"

"This application needs a Kinect for Windows sensor in order to function. Please plug one into the PC."

Details

Initializing

"Initializing…"

n/a

n/a

Connected

"All set!"

n/a

n/a

Disconnected (with IsRequired==false)

"Get the full experience by plugging in a Kinect for Windows sensor"

"This application will use a Kinect for Windows sensor if one is plugged into the PC."

Details

Connected (but the KinectSensor.Start method raised an IOException, which means another app is using it).

"This Kinect is being used by another application."

"This application needs a Kinect for Windows sensor in order to function. However, another application is using the Kinect."

Details

DeviceNotGenuine

"This sensor is not genuine!"

"This application needs a genuine Kinect for Windows sensor in order to function. Please plug one into the PC."

Details

DeviceNotSupported

"Kinect for Xbox 360 not supported."

"This application needs a Kinect for Windows sensor in order to function. Please plug one into the PC."

Details

InsufficientBandwidth

"Too many USB devices! Please unplug one or more."

"The Kinect needs the majority of the USB bandwidth of a USB Controller. If other devices are in contention for that bandwidth, the Kinect may not be able to function."

Details

NotReady or Error

"Oops, there is an error."

"The Kinect is plugged in, but an error has occurred."

Details

NotPowered

"Plug my power cord in!"

"The Kinect is plugged into the computer with its USB connection, but the power plug appears to be not powered."

Details

 

 

2.5在开发人员的机器上运行Kinect应用程序

当在开发者的机器上和在非开发者的机器上Kinect for Xbox360时kinectstatus工作的方法是不一样的。下面是Kinect在不同硬件上由初始化到成功连接过度时的状态变化。

Sensor Hardware

Kinect for Windows

Kinect for Xbox 360

Developer PC

Initializing -> Connected

Initializing -> Connected (with debugger warnings)

End-user PC

Initializing -> Connected

Initializing -> DeviceNotSupported

在装有KinectSDK的开发者的机器上,开发者在开发过程中可以使用Kinect for Xbox360,这表示KinectStatus属性将返回正常的连接状态,如果你在调试程序使用的是Xbox360,将会出现类似下面的警告内容。

The Kinect plugged into your computer is for use on the Xbox 360.
  You may continue using your Kinect for Xbox 360 on your computer for development purposes.
  Microsoft does not guarantee full compatibility for Kinect for Windows applications
    and the Kinect for Xbox 360.

在最终用户的电脑上,windows版的Kinect是功能齐全的而在同一台电脑上,使用Xbox 360就会返回“设备不支持”的消息

 

对于上面所说的异常情况为用户提供必要的提示信息是非常重要的。如下

 

 

2.6 交互空间

Kinect的交互区域是在Kinect正前方的一片区域,是由红外线摄像头和彩色摄像头决定的前方的一片视野。如果光线不是太强也不是太暗,被跟踪到的物体反光不是太强烈,那你将会很好的跟踪到人体骨架。Kinect一般放在人前方与头部持平的位置,它可以被放在各种位置上。

 

交互空间有Kinect的摄像机的视野决定。为了提高交互的空间。可以使用Kinect内置的倾斜马达。这个倾斜马达支持±27°角调节。


我们可以通过调用 INuiSensor::NuiCameraElevationSetAngle (C++)或者KinectSensor.ElevationAngle (C#)来调节角度。

马达是为了调节罕见的角度而设计的,也许在你每次启动程序时会调节一下。经常反复的调节会降低马达寿命。

 

2.7 加速度计

Kinect传感器包含一个三个坐标轴的坐标系和2g的范围g取决于当前的重量加速度。它使得传感器可以反馈当前重力环境下的Kinect朝向。加速度计可以帮助Kinect检测当前是否处于一个不寻常的位置。它可以帮助SDK计算出平滑表面的数据。用来提供更加准确的增强现实场景中的3D投影。

 

加速度计拥有下限为1度的精确度。此外,精确度对于温度是敏感的。在正常工作温度下最多存在3度的偏差。偏差可以是正或者是负的。但是一个被给定的传感器总是展现出相同的偏差。如果需要这个偏差是可以矫正的,通过比对加速度计的垂直坐标(y轴)和检测到的光滑平面的深度数据。

 

阅读并理解加速度计数据

Kinect SDK为读取加速度计数据提供本地 INuiSensor.NuiAccelerometerGetCurrentReading和托管的 KinectSensor.AccelerometerGetCurrentReading方法。Kinect SDK不提供加速度计改变的事件提示。加速度计返回一个3D矢量沿着重力的方向。这个3D矢量以Vector4(x,y,z,w)的形式返回。w总是设置为0.0。传感器在坐标系的中心原点。该坐标系是一个右手坐标系。z轴的正方向为传感器的朝向。矢量以重力加速(g或者 9.81m/s^2)的为单位。传感器默认的旋转由(x,y,z,w)矢量 表示。他的值为(0,-1.0,0,0)

 

加速度计的数据和数据记录

当记录加速度计数据流时,加速度计的读数在每一帧更新时都会被读取并且被记录下来。播放时,加速度计的读数由最新被索引到帧上返回。


To be continued…


                                                                                                                   ——  貳零壹叁 年 捌 月 貳拾貳 日


 


这篇关于【Kinect for Windows SDK MSDN文档翻译】之一的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/547828

相关文章

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

在 Windows 上部署 gitblit

在 Windows 上部署 gitblit 在 Windows 上部署 gitblit 缘起gitblit 是什么安装JDK部署 gitblit 下载 gitblit 并解压配置登录注册为 windows 服务 修改 installService.cmd 文件运行 installService.cmd运行 gitblitw.exe查看 services.msc 缘起

Windows如何添加右键新建菜单

Windows如何添加右键新建菜单 文章目录 Windows如何添加右键新建菜单实验环境缘起以新建`.md`文件为例第一步第二步第三步 总结 实验环境 Windows7 缘起 因为我习惯用 Markdown 格式写文本,每次新建一个.txt后都要手动修改为.md,真的麻烦。如何在右键新建菜单中添加.md选项呢? 网上有很多方法,这些方法我都尝试了,要么太麻烦,要么不凑效

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法   消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法 [转载]原地址:http://blog.csdn.net/x605940745/article/details/17911115 消除SDK更新时的“

Windows下Nginx的安装及开机启动

1、将nginx-1.16.1.zip解压拷贝至D:\web\nginx目录下。 2、启动Nginx,两种方法: (1)直接双击nginx.exe,双击后一个黑色的弹窗一闪而过。 (2)打开cmd命令窗口,切换到nginx目录下,输入命令 nginx.exe 或者 start nginx ,回车即可。 3、检查nginx是否启动成功。 直接在浏览器地址栏输入网址 http://lo

论文翻译:ICLR-2024 PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS

PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS https://openreview.net/forum?id=KS8mIvetg2 验证测试集污染在黑盒语言模型中 文章目录 验证测试集污染在黑盒语言模型中摘要1 引言 摘要 大型语言模型是在大量互联网数据上训练的,这引发了人们的担忧和猜测,即它们可能已

Windows环境利用VS2022编译 libvpx 源码教程

libvpx libvpx 是一个开源的视频编码库,由 WebM 项目开发和维护,专门用于 VP8 和 VP9 视频编码格式的编解码处理。它支持高质量的视频压缩,广泛应用于视频会议、在线教育、视频直播服务等多种场景中。libvpx 的特点包括跨平台兼容性、硬件加速支持以及灵活的接口设计,使其可以轻松集成到各种应用程序中。 libvpx 的安装和配置过程相对简单,用户可以从官方网站下载源代码

Python脚本:TXT文档行数统计

count = 0 #计数变量file_dirs = input('请输入您要统计的文件根路径:')filename = open(file_dirs,'r') #以只读方式打开文件file_contents = filename.read() #读取文档内容到file_contentsfor file_content in file_contents: