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)
}