一名热爱体感技术的
业余专业开发人员

Kinect For Windows SDK 2.0的解读之《KinectV2开发手册》

Kinect For Windows SDK 2.0的解读之一《开发手册》

这二天在外面出差,回来才发现26号早晨微软已经通知我可以下载最新的SDK了!今天,11-27终于回到上海,趁着夜色,我将这次SDK中描述的主要内容翻译一下给大家看看。截止目前为止,还未看到互联网上有人分享相关内容文章。那就由我先给大家抛砖引玉吧!你可以在SkyDrive下载此文章对应的doc文件(不保证是最新的哦)。正式版本的Kinect以及SDK,需要等到2014年夏季,也就是2014.7~2014.9左右。。。

预览版SDK内容

下图是下载的发布须知、SDK安装文件、例子(源代码和执行文件)、开发文档。请大家不要问我要,按照微软规定,不能分发给大家。大家关注我的网站52coding.com的kinect分类内容,或者我的博客weibo.com/guoming0000即可。这次我们重点解读开发文档(参考手册),例子代码过些天会进行分析,而可执行程序、具体Kinect数据内容等Kinect硬件到手再进行分析。 

这次SDK的名字叫做Kinect For Windows SDK2.0,听起来是1.8的威力加强版,不过估计暂时无法支持一代的Kinect。(从我已安装的sdk看,lib文件里面只有x64文件夹,在论坛上确认了目前只能开发x64应用!他们说,会正式版本发布前给出x86的库文件,囧。还好我笔记本是x64的,不然都玩不了你)。头文件也只有8500行的Kinect.h。下面开始解读开发文档!

新的特性

开发文档中,前1个小节,What’s New和Known Issues都未有内容。然后Features特点章节中给出了不少参数。新的K4W sdk(Kinect for windows sdk)有以下特点:

 #使用XBox One Kinect传感器

#在水平和垂直方向上具有更宽阔的深度和彩色视野

#全高清彩色画面(Full HD Color)

#独立照明红外(Lighting Independent Infrared ,30fps)

#深度保真(Depth fidelity,3x)

#改进的麦克风(零平衡,zero balanced)

#6个人完整25个骨骼点(每个人都有25个)

#大拇指追踪,手根部追踪(end of hand tracking),手的开与闭手势

#增强的高质量操作范围(近0.5米,远4.5米)

#多个应用可以同时使用传感器

【好吧,读完这几行,是不是被震撼到了!除了声音、彩色、深度和骨骼数据的全面提升,还增加了更多的手势。甚至,现在多个应用可以同时使用这个传感器!微软底层太厉害了,这点可以给我们以后的应用带来许多许多改变,例如:一个程序用于应用演示、另一个用于保存数据、在另一个用于程序调试。我想会有很多人利用这个特点,做出前所未有的玩意儿!】

系统环境要求

操作系统

Windows 8

Windows 8.1

Windows Embedded Standard 8

Windows Surface

Windows Surface 2

开发环境

Visual Studio 2012 (Microsoft Visual Studio 2012 Express.)

Visual Studio 2013

.NET Framework 4.5 (.NET Framework 4.5)

硬件要求

最低要求

32-bit (x86) or 64-bit (x64) processors

Dual-core, 2.66-GHz or faster processor

USB 2.0 bus dedicated to the Kinect

2 GB of RAM

Graphics card that supports DirectX 11

A Microsoft Windows Xbox One Kinect Sensor

建议要求

Windows 8.1

4 GB of RAM

i7 CPU running at 2.5GHZ (or higher)

DirectX 11 Compatible Video Card(NVidia GeForce GTX560,AMD Radeon 6950)

【GPU越高越好,如果不高将无法在重建时进行可交互操作only modern DirectX 11 GPUs will enable real-time and interactive frame rates during reconstruction。我的笔记本介于最低和最高之间吧,若想玩重建可能不太行。至于其它的骨骼追踪等技术是否能运行,还得等传感器来了测试测试吧。】

文档下来说了一堆安装此SDK要注意的问题,总之把之前所有相关的东西删掉、该关的开发环境等关掉。还说,sdk是支持32bit和64bit计算机的。

 提供示例

现在提供了WPF和C++例子代码,都是一些简单的数据显示例子,看来后续的例子需要广大开发者贡献了。这也意味着,没有写过上一代Kinect代码的同学,使用这个SDk将更加困难。

 

令人无限憧憬的枚举类型

开发文档中概述部分差不多结束了,后面就是API函数参考。这里我列举一些枚举函数,让大家可以憧憬下新的SDK牛掰的功能呢。

骨骼点枚举:

typedef enum _JointType

{

JointType_SpineBase = 0,

JointType_SpineMid = 1,

JointType_Neck = 2,

JointType_Head = 3,

JointType_ShoulderLeft = 4,

JointType_ElbowLeft = 5,

JointType_WristLeft = 6,

JointType_HandLeft = 7,

JointType_ShoulderRight = 8,

JointType_ElbowRight = 9,

JointType_WristRight = 10,

JointType_HandRight = 11,

JointType_HipLeft = 12,

JointType_KneeLeft = 13,

JointType_AnkleLeft = 14,

JointType_FootLeft = 15,

JointType_HipRight = 16,

JointType_KneeRight = 17,

JointType_AnkleRight = 18,

JointType_FootRight = 19,

JointType_SpineShoulder = 20,

JointType_HandTipLeft = 21,

JointType_ThumbLeft = 22,

JointType_HandTipRight = 23,

JointType_ThumbRight = 24,

JointType_Count = (JointType_ThumbRight+1)

} JointType;

 

手的状态:

typedef enum _HandState

{

HandState_Unknown = 0,

HandState_NotTracked = 1,

HandState_Open = 2,

HandState_Closed = 3,

HandState_Lasso = 4

} HandState, HandState_Unknown, HandState_NotTracked, HandState_Open, HandState_Closed, HandState_Lasso;

 

面部表情:

typedef enum _Expression

{

Expression_Neutral = 0,

Expression_Happy = 1,

Expression_Count = (Expression_Happy+1)

} Expression, Expression_Neutral, Expression_Happy, Expression_Count;

 

表情+动作识别得到:

typedef enum _DetectionResult

{

DetectionResult_Unknown = 0,

DetectionResult_No = 1,

DetectionResult_Maybe = 2,

DetectionResult_Yes = 3

} DetectionResult, DetectionResult_Unknown, DetectionResult_No, DetectionResult_Maybe, DetectionResult_Yes;

 

是否带眼镜:

typedef enum _Appearance

{

Appearance_WearingGlasses = 0,

Appearance_Count = (Appearance_WearingGlasses+1)

} Appearance, Appearance_WearingGlasses, Appearance_Count;

 

面部器官状态

typedef enum _Activity

{

Activity_EyeLeftClosed = 0,

Activity_EyeRightClosed = 1,

Activity_MouthOpen = 2,

Activity_MouthMoved = 3,

Activity_LookingAway = 4,

Activity_Count = (Activity_LookingAway+1)

}