(转载请注明出处)

使用SDK: Kinect for Windows SDK v2.0 public preview1409

同前面,因为SDK未完成,不附上函数/方法/接口的超链接。

是的,微软在9月16日更新了SDK。没看具体更新内容,但是感觉上解决了一些bug,比如x86的Fusion。

这次说说高清面部帧的面部模型。

Kinect 2可以根据面部进行实时面部建模,感觉高大上,但是目前不能捕捉舌头,是个遗憾。

毕竟颜艺中舌头的地位可不低啊。

说到模型自然当然就是顶点集合啦,目前面部模型的定点数是1347,利用GetFaceModelVertexCount获取,

请注意这是函数,而不是宏定义,也就是说强烈建议使用动态分配,而不是静态分配。

嗯,1347,1+3+4+7=15,也就说是三角面咯。但是这节不涉及,毕竟这节是2D的,将顶点显示出来就好了。

怎么获取面部模型呢?首先,面部模型对应的接口是IFaceModel,使用IFaceModel::CalculateVerticesForAlignment

同前面,每(高清面部)帧需要更新面部对齐IHighDefinitionFaceFrame::GetAndRefreshFaceAlignmentResult.


那么怎么获取IFaceModel,一种方法是利用IHighDefinitionFaceFrame::get_FaceModel等(帧源也能),但是这样,

相当于每帧都会创建一个面部模型,即使我们释放掉,内存也没有回收。有点像内存泄漏,不过只是内部引用计数未归零。

这样会严重导致性能。所以使用函数CreateFaceModel即可,看参数名就知道了,很简单。

所以我们的大致步骤:

创建资源与事件

在高清面部临帧事件里面更新 面部对齐, 计算面部模型,将面部模型顶点映射为彩色空间

在刻画是顺便画这些点即可。

当然,还要保证跟踪ID有效,事件模式在多个事件就有点麻烦了,没有轮询模式简单。

为了效率,这里选择ICoordinateMapper::MapCameraPointsToColorSpace即数组转换,省去单个转换中虚函数的开销。

所以我们需要申请两块定点缓存,一个3D的一个2D的。

自然,动态内存分配需要时间,加上假设第一次分配成功但是第二次分配失败还要回滚。这里一次申请即可。

    // 创建顶点缓存if (SUCCEEDED(hr)){m_pFaceVertices = reinterpret_cast<CameraSpacePoint*>(malloc((sizeof(CameraSpacePoint) + sizeof(ColorSpacePoint)) * m_cFaceVerticeCount));if (!m_pFaceVertices) hr = E_OUTOFMEMORY;}// 修改数据if (SUCCEEDED(hr)){const_cast<const ColorSpacePoint*>(m_ImagaRenderer.data.face_points) =reinterpret_cast<const ColorSpacePoint*>(m_pFaceVertices + m_cFaceVerticeCount);const_cast<UINT&>(m_ImagaRenderer.data.face_points_count) = m_cFaceVerticeCount;}

也算是小技巧吧,不过因为使用了const,所以还有点麻烦。

差不多就是这样:

下载地址....见评论区或者到笔者资源区里面寻找,这连10kb的东西都要审核...

这次是2D,下次是3D,不知道是用D3D,还是抱Unity的大腿....



Kinect for Windows SDK v2.0 开发笔记 (十二) 高清面部帧(3) 面部模型(2D)相关推荐

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

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

  2. Kinect for Windows SDK v2.0 开发笔记 (十三) 高清面部帧(4) 面部模型构建器

     (转载请注明出处) 使用SDK: Kinect for Windows SDK v2.0 public preview1409 同前面,因为SDK未完成,不附上函数/方法/接口的超链接. 这次让 ...

  3. Kinect for Windows SDK v2.0 开发笔记 (五)骨骼帧与笑面男

    (转载请注明出处) 使用SDK: Kinect for Windows SDK v2.0 public preview 这次说说这骨骼帧的获取.嗯,Kinect买来就为这个啊.不然其他数据,买其他产品 ...

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

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

  5. kinect for windows SDK 2.0下载和kinect 2安装调试

    kinect v2价格便宜.功能强大,很适合用来做三维重构开发研究.下面,简单记录一下Kinect2及其开源包kinect for windows SDK 2.0的安装与调试.我买的设备是xbox o ...

  6. 【Visual C++】游戏开发笔记十二 游戏输入消息处理(一) 键盘消息处理

    相信大家都熟悉<仙剑奇侠传98柔情版>的人机交互方式,用的仅仅是键盘.在那个物质并不充裕的时代,一台配置并不高的电脑,一款名叫<仙剑奇侠传>的游戏,却能承载一代人对梦想的追逐. ...

  7. 【Visual C 】游戏开发笔记十二 游戏输入消息处理 一 键盘消息处理

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 本系列文 ...

  8. Modbus协议栈开发笔记之二:Modbus消息帧的生成

    前面我们已经对Modbus的基本事务作了说明,也据此设计了我们将要实现的主从站的操作流程.这其中与Modbus直接相关的就是Modbus消息帧的生成.Modbus消息帧也是实现Modbus通讯协议的根 ...

  9. Web项目实战 | 购物系统v2.0 | 开发记录(五)使用base64编码实现头像修改 | 用户个人信息修改 | JQuery动态提示

    文章目录 以往记录 一.运行环境 二.实现头像修改 三.用户个人信息修改 四.Bug & DeBug 以往记录 Web项目实战 | 购物系统v2.0 | 开发记录(一)需求分析 | 技术选型 ...

最新文章

  1. HDU-4483 Lattice triangle 数论
  2. Vue+Openlayers+Draw实现画笔切换功能,切换画笔为点、线、面
  3. 进击的UI------------网络判断
  4. Java命令行界面(第10部分):picocli
  5. 怒怼腾讯加班的应届生本人回应:已找到新工作
  6. c语言数组蛇形编程,C语言每天小练(二)——蛇形数组
  7. 使用ODBC向SQLServer存储过程传参数的方法
  8. hdu 2037 这个夏天不AC (java)
  9. java的ascii码表_ASCII码表对照
  10. 用计算机算标准曲线,标准曲线计算器官方版
  11. kubuntu18.04 重装显卡驱动后无法进入桌面
  12. vue中使用highCharts的drilldown钻取图、3D等图
  13. Rayman的绝顶之路——Leetcode每日一题打卡21
  14. 国产框架MindSpore联合山水自然保护中心,寻找、保护「中华水塔」中的宝藏生命
  15. wallpaper设置壁纸图片被拉伸
  16. Python 输入、输出
  17. 一英寸等于多少厘米「知识普及」
  18. Android-SQLite数据库实例,这些知识点你会吗
  19. 【微信小程序】e.target.id和e.currentTarget.dataset.id的区别
  20. 第一次放生,感觉很奇妙

热门文章

  1. 蓝牙耳机的LDAC、aptX指的都是什么?
  2. Phonetic symbol 辅音 - 清辅音 -- /ʃ/
  3. U盘不被电脑识别问题
  4. Java 不允许在一个范围大的作用域下重新定义同名变量
  5. 医用红外线灯的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  6. Word如何快速设置多级标题并生成目录
  7. 开发中使用到的sql总结
  8. 人像修图怎么修脸部瑕疵
  9. plc串口通讯 qt_Qt 编写串口调试助手
  10. 到另外一个城市工作时,五险一金怎么办?