Kinect for Windows SDK v2.0 开发笔记 (十二) 高清面部帧(3) 面部模型(2D)
(转载请注明出处)
使用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)相关推荐
- Kinect for Windows SDK v2.0 开发笔记 (十) 高清面部帧(1) FACS 介绍
转载于:https://blog.csdn.net/dustpg/article/details/38892783 使用SDK: Kinect for Windows SDK v2.0 public ...
- Kinect for Windows SDK v2.0 开发笔记 (十三) 高清面部帧(4) 面部模型构建器
(转载请注明出处) 使用SDK: Kinect for Windows SDK v2.0 public preview1409 同前面,因为SDK未完成,不附上函数/方法/接口的超链接. 这次让 ...
- Kinect for Windows SDK v2.0 开发笔记 (五)骨骼帧与笑面男
(转载请注明出处) 使用SDK: Kinect for Windows SDK v2.0 public preview 这次说说这骨骼帧的获取.嗯,Kinect买来就为这个啊.不然其他数据,买其他产品 ...
- Kinect v2.0原理介绍之八:高清面部帧(1) FACS 介绍
~~有兴趣的小伙伴,加kinect算法交流群:462964980. 使用SDK: Kinect for Windows SDK v2.0 public preview1408 为了介绍高清面部帧 ...
- kinect for windows SDK 2.0下载和kinect 2安装调试
kinect v2价格便宜.功能强大,很适合用来做三维重构开发研究.下面,简单记录一下Kinect2及其开源包kinect for windows SDK 2.0的安装与调试.我买的设备是xbox o ...
- 【Visual C++】游戏开发笔记十二 游戏输入消息处理(一) 键盘消息处理
相信大家都熟悉<仙剑奇侠传98柔情版>的人机交互方式,用的仅仅是键盘.在那个物质并不充裕的时代,一台配置并不高的电脑,一款名叫<仙剑奇侠传>的游戏,却能承载一代人对梦想的追逐. ...
- 【Visual C 】游戏开发笔记十二 游戏输入消息处理 一 键盘消息处理
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 本系列文 ...
- Modbus协议栈开发笔记之二:Modbus消息帧的生成
前面我们已经对Modbus的基本事务作了说明,也据此设计了我们将要实现的主从站的操作流程.这其中与Modbus直接相关的就是Modbus消息帧的生成.Modbus消息帧也是实现Modbus通讯协议的根 ...
- Web项目实战 | 购物系统v2.0 | 开发记录(五)使用base64编码实现头像修改 | 用户个人信息修改 | JQuery动态提示
文章目录 以往记录 一.运行环境 二.实现头像修改 三.用户个人信息修改 四.Bug & DeBug 以往记录 Web项目实战 | 购物系统v2.0 | 开发记录(一)需求分析 | 技术选型 ...
最新文章
- HDU-4483 Lattice triangle 数论
- Vue+Openlayers+Draw实现画笔切换功能,切换画笔为点、线、面
- 进击的UI------------网络判断
- Java命令行界面(第10部分):picocli
- 怒怼腾讯加班的应届生本人回应:已找到新工作
- c语言数组蛇形编程,C语言每天小练(二)——蛇形数组
- 使用ODBC向SQLServer存储过程传参数的方法
- hdu 2037 这个夏天不AC (java)
- java的ascii码表_ASCII码表对照
- 用计算机算标准曲线,标准曲线计算器官方版
- kubuntu18.04 重装显卡驱动后无法进入桌面
- vue中使用highCharts的drilldown钻取图、3D等图
- Rayman的绝顶之路——Leetcode每日一题打卡21
- 国产框架MindSpore联合山水自然保护中心,寻找、保护「中华水塔」中的宝藏生命
- wallpaper设置壁纸图片被拉伸
- Python 输入、输出
- 一英寸等于多少厘米「知识普及」
- Android-SQLite数据库实例,这些知识点你会吗
- 【微信小程序】e.target.id和e.currentTarget.dataset.id的区别
- 第一次放生,感觉很奇妙