使用SDK: Kinect for Windows SDK v2.0 public preview 1408


我是程序猿帝国前方记者某灰,接下来是对坑爹微软的跟踪报道!

微软于8月20日发布了SDK2.0 PR1408....但.自.己.我.不.知.道.

因为官网上面是这样的,截图作证:

上面写着七月15...我以为还没更新...但是点进去.....

。。。居然更新了..老大...更新一下网页会死么...(貌似频率是周更?)

好了,看看我们这次有了说明新的坑爹东西:

主要:

手势有32位支持了

Fusion支持 与 例子

面部 例子

所以,这次我们需要看看面部帧的获取。

先需要包含Kinect.Face.h头文件与连接Kinect.Face.lib静态库,当然不连接静态库,

而是使用显式动态链接dll文件 但是...没必要....又不是LGPL授权...

面部帧获取在PR1407尝试过了,返回的是“路径未找到”,这次将会说明为什么(简单总结就是因为微软坑爹)

先看看面部帧有什么数据可以获取:

1. 面部外框: 一个整数矩形,表示面部的位置。不知道为什么是整型的,因为浮点用惯了?

2.面部特征点: 一个浮点坐标数组,目前有下面5种

enum _FacePointType{FacePointType_None   = -1,FacePointType_EyeLeft = 0,FacePointType_EyeRight = 1,FacePointType_Nose = 2,FacePointType_MouthCornerLeft  = 3,FacePointType_MouthCornerRight = 4,FacePointType_Count    = ( FacePointType_MouthCornerRight + 1 ) } ;

再增加上嘴唇与下嘴唇也不错。

3.面部旋转四元数:  一个四维向量,什么是四元数,可以自行搜索一下,不在本篇文章范围内

这个四元数可以转换为转动角度:roll pitch yaw

具体转换方法可以见范例或者自行搜索

4.面部相关属性数值: 表示面部当前某些状态的一个枚举数组

枚举如下:

enum _DetectionResult{DetectionResult_Unknown    = 0,DetectionResult_No = 1,DetectionResult_Maybe  = 2,DetectionResult_Yes    = 3} ;

状态如下:

enum _FaceProperty{FaceProperty_Happy    = 0,FaceProperty_Engaged   = 1,FaceProperty_WearingGlasses    = 2,FaceProperty_LeftEyeClosed = 3,FaceProperty_RightEyeClosed    = 4,FaceProperty_MouthOpen = 5,FaceProperty_MouthMoved    = 6,FaceProperty_LookingAway   = 7,FaceProperty_Count = ( FaceProperty_LookingAway + 1 ) } ;

名称大多易懂...但是Engaged是啥?忙碌?你怎么看出来的?

使用函数CreateFaceFrameSource创建一个面部帧源,这里改函数了,而不是之前的方法。

参数1就是Kinect设备指针  不多说

参数2是跟踪ID 需要一个确切的id,id无效的话无法获取面部帧数据 可以动态修改 没的话设0即可

参数3是一个位状态数组

enum _FaceFrameFeatures{FaceFrameFeatures_None   = 0,FaceFrameFeatures_BoundingBoxInInfraredSpace   = 0x1,FaceFrameFeatures_PointsInInfraredSpace  = 0x2,FaceFrameFeatures_BoundingBoxInColorSpace    = 0x4,FaceFrameFeatures_PointsInColorSpace = 0x8,FaceFrameFeatures_RotationOrientation    = 0x10,FaceFrameFeatures_Happy = 0x20,FaceFrameFeatures_RightEyeClosed    = 0x40,FaceFrameFeatures_LeftEyeClosed = 0x80,FaceFrameFeatures_MouthOpen = 0x100,FaceFrameFeatures_MouthMoved   = 0x200,FaceFrameFeatures_LookingAway  = 0x400,FaceFrameFeatures_Glasses  = 0x800,FaceFrameFeatures_FaceEngagement   = 0x1000} ;

除了感觉有点麻烦,还有就是麻烦

参数4是输出 也不多说

其余的跟之前的一样,可谓驾轻就熟,值得注意的是 用0作为跟踪id 初始化的话,需要再次修改

跟踪id才行,面部帧源提供了这个接口,所以不能直接释放掉,作为成员变量吧

驾轻就熟:

面部帧源创建面部帧读取器

面部帧读取器 ->AcquireLatestFrame 获取最新一帧

或者使用事件模式,不过鉴于目前就已经支持6人了,还是轮询吧。

使用面部帧读取器需要检查是否在跟踪,是的话进入下一步,否的话尝试获取新的跟踪ID

跟踪ID是有骨骼帧(BodyFrame)相关接口获取的,方法接口是IBody::get_TrackingId

所以这里需要打开骨骼帧

在跟踪时,使用IFaceFrame::get_FaceFrameResult获取面部帧结果(IFaceFrameResult)

IFaceFrameResult提供的一系列接口用来获取前面提到的面部数据,详细的看头文件好了,

官网目前貌似还没有这个的API说明

这就差不多了,可以自行编码了。但是你会发现缺少dll文件...

你可以从XXX\v2.0-PublicPreview1408\Redist\Face\x86\找到这个dll文件,复制过来吧,64位就找x64

然后你就会发现你被坑了,CreateFaceFrameSource返回:路径未找到...

你还需要将同一目录下的NuiDatabase文件夹一起复制过去..............

好了,为方便,可以使用命令:

在项目属性-配置属性-生成事件-后期生成事件的命令行里面填写:

xcopy "$(KINECTSDK20_DIR)Redist\Face\x86\NuiDatabase" "$(TargetDir)NuiDatabase" /e /y /i /r
xcopy "$(KINECTSDK20_DIR)Redist\Face\x86\Kinect20.Face.dll" "$(TargetDir)" /c /y

即可,xcopy命令详细请搜索

使用结果:相当不稳定

数据抖动相当厉害....简直没法用....

还有我截图的时候面目狰狞....就不献丑了.我对这个看脸的世界绝望了

范例下载:点击这里

Kinect v2.0原理介绍之十三:面部帧获取相关推荐

  1. Kinect v2.0原理介绍之八:高清面部帧(1) FACS 介绍

     ~~有兴趣的小伙伴,加kinect算法交流群:462964980. 使用SDK: Kinect for Windows SDK v2.0 public preview1408 为了介绍高清面部帧 ...

  2. 关于KINECT V2.0 C++ SDK 基础教程的笔记 EP2

    最近忙着搞老师的任务,没来得及更新点云系列. 目前在做Kinect,在这里接着做个笔记. 原文地址: Kinect Tutorials 这仅仅是做一个笔记以及自己的实际操作记录 关于KINECT V2 ...

  3. 深度相机(五)--Kinect v2.0

    原文:http://blog.csdn.net/qq1175421841/article/details/50412994 ----微软Build2012大会:Kinect for Windows P ...

  4. 【计算机视觉】深度相机(六)--Kinect v2.0 手势样本库制作

    目录为1.如何使用Kinect Studio录制手势剪辑:2.如何使用Visual Gesture Builder创建手势项目:3.如何在我的C#程序中使用手势:4.关于录制.剪辑手势过程中的注意事项 ...

  5. 深度相机(六)--Kinect v2.0 手势样本库制作

    目录为1.如何使用Kinect Studio录制手势剪辑:2.如何使用Visual Gesture Builder创建手势项目:3.如何在我的C#程序中使用手势:4.关于录制.剪辑手势过程中的注意事项 ...

  6. Kinect v2.0 for windows开发环境说明

    官方文档里是这些: Supported Operating Systems and Architectures The following operating systems and architec ...

  7. 唐诗宋词v2.0原理分享

    v2.0本意是进行数据上的优化.但是由于数据量很大,存储方式由原先的写在代码中,变为在文件中,因此不得不采用异步方式,这样原先的代码绝大部分都不能使用了. 原理分享 主要进行了以下几个步骤的工作: 从 ...

  8. Kinect v2.0 for Windows10 安装教程

    最近试了下kinect 2.0,但是发现买了之后不知道怎么用,于是研究了两天,参照各位前人的资料后,整合,再加上和客服联系沟通的结果,重新整理了一份适合小白的安装教程,有的引用可能忘了是哪里了,因为我 ...

  9. Kinect for Windows SDK v2.0 开发笔记 (十) 高清面部帧(1) FACS 介绍

    转载于:https://blog.csdn.net/dustpg/article/details/38892783 使用SDK: Kinect for Windows SDK v2.0 public ...

最新文章

  1. 智慧健康,协同发展:清华大学携手天津市共同探索健康医疗大数据
  2. 机器学习笔记:梯度消失
  3. 微量元素重塑新生态-农业大健康·李喜贵:谋定功能性农业
  4. lua-nginx-module directives 中文版
  5. .NET代码混淆学习和解决视频批量转换中.wmv转换出错问题
  6. android sqlite查询某个字段,Android的sqlite:如何检索特定列的特定数据?
  7. 零负债之人的10个习惯
  8. 清除故障,Windows2003更加亲切
  9. 三星Galaxy Note 10渲染图曝光:前置打孔双摄+后置横排四摄
  10. linux取反格式,linux基本命令总结(二)
  11. iPad mini 6 评测:多功能升级,一手掌握的极佳手感,适合娱乐休闲
  12. python制作的简单程序_Python如何制作简易收银小程序
  13. Gym - 100889H Hitting Points 计算几何+三分+二分
  14. arcgis 10.8 for win10安装教程
  15. 电脑C盘爆满了怎么办
  16. 使用WinCE CAB Manager制作CAB安装文件
  17. 获阿里云领投的数千万A轮融资,剑指混合云的ZStack还有更大的野心
  18. 程序员专属段子集锦 8/10
  19. 物联网中的存储资源盘活
  20. HI3516D之Caffe移植

热门文章

  1. 因果推理(causal inference)初步调研
  2. 「镁客早报」OneWeb顺利发射首批6颗互联网卫星;华为西欧负责人称公司将会获得德国5G合同...
  3. GitLab更换IP地址报错解决
  4. 打条码软件怎样测试到纸张大小,条码标签纸规格有哪些?如何在打印机上设置打印尺寸?...
  5. Symbian OS s60 3rd编程中实现IMSI、IMEI查询
  6. 十大跑步运动耳机品牌有哪些,质量比较好的运动耳机品牌推荐
  7. 睡眠排序算法c语言实现,Linux 进程必知必会
  8. linux脚本编写图形,shell图形化界面脚本实现
  9. CGAL4.4_2D限定三角化及网格(2D Conforming Triangulations and Meshes)
  10. python 数据处理时去除emoji表情