faceframe kinect2.0 api 注意点
首先要给futures绑定,注意需要用的几个
static const DWORD THIS_APP_FACE_FRAME_FEATURES =
FaceFrameFeatures::FaceFrameFeatures_BoundingBoxInColorSpace
|FaceFrameFeatures::FaceFrameFeatures_BoundingBoxInInfraredSpace
| FaceFrameFeatures::FaceFrameFeatures_PointsInColorSpace
| FaceFrameFeatures::FaceFrameFeatures_RotationOrientation
| FaceFrameFeatures::FaceFrameFeatures_Happy
| FaceFrameFeatures::FaceFrameFeatures_RightEyeClosed
| FaceFrameFeatures::FaceFrameFeatures_LeftEyeClosed
| FaceFrameFeatures::FaceFrameFeatures_MouthOpen
| FaceFrameFeatures::FaceFrameFeatures_MouthMoved
| FaceFrameFeatures::FaceFrameFeatures_LookingAway
| FaceFrameFeatures::FaceFrameFeatures_Glasses
| FaceFrameFeatures::FaceFrameFeatures_FaceEngagement;
//为每个body创建一个source,注意绑定的features
IFaceFrameSource * myFaceFrameSources[BODY_COUNT];
IFaceFrameReader* myFaceFrameReaders[BODY_COUNT];
HRESULT hrface = false;
for (int i = 0; i < BODY_COUNT;i++){
hrface = CreateFaceFrameSource(myKinectSecsor, 0, THIS_APP_FACE_FRAME_FEATURES, &myFaceFrameSources[i]);
if (SUCCEEDED(hrface)){
hrface = myFaceFrameSources[i]->OpenReader(&myFaceFrameReaders[i]);
}
}
//get face point
HRESULT hr3 = false;
vector<RectI> myFaceRect;
for (int iFace = 0; iFace < BODY_COUNT; ++iFace)
{
// retrieve the latest face frame from this reader
IFaceFrame* pFaceFrame = nullptr;
hr3 = myFaceFrameReaders[iFace]->AcquireLatestFrame(&pFaceFrame);
BOOLEAN bFaceTracked = false;
if (SUCCEEDED(hr3) && nullptr != pFaceFrame)
{
// check if a valid face is tracked in this face frame
hr3 = pFaceFrame->get_IsTrackingIdValid(&bFaceTracked);
}
if (SUCCEEDED(hr3))
{
if (bFaceTracked)
{
IFaceFrameResult* pFaceFrameResult = nullptr;
RectI faceBox = { 0 };
RectI depthBox = {0};
PointF facePoints[FacePointType::FacePointType_Count];
hr3 = pFaceFrame->get_FaceFrameResult(&pFaceFrameResult);
// need to verify if pFaceFrameResult contains data before trying to access it
if (SUCCEEDED(hr3) && pFaceFrameResult != nullptr)
{
hr3=pFaceFrameResult->get_FaceBoundingBoxInColorSpace(&faceBox);
hr3=pFaceFrameResult->get_FaceBoundingBoxInInfraredSpace(&depthBox);
myFaceRect.push_back(depthBox);
cv::rectangle(bufferMat, cv::Point(faceBox.Left, faceBox.Top), cv::Point(faceBox.Right, faceBox.Bottom), cvScalar(0, 0, 255), 2);
if (SUCCEEDED(hr3))
{
hr3 = pFaceFrameResult->GetFacePointsInColorSpace(FacePointType::FacePointType_Count, facePoints);
}
for (int i = 0; i < 5; i++)
{
cv::circle(bufferMat, cv::Point(facePoints[i].X, facePoints[i].Y),2, cvScalar(255), 2);
}
}
destory(pFaceFrameResult);
}else if (myBody[iFace]){ //如果该body没被绑定,而这个body的骨骼又被提取到了,那么用下面的id来给source绑定上id
BOOLEAN bTracked = false;
// 检查被骨骼跟踪没有
hr3 = myBody[iFace]->get_IsTracked(&bTracked);
UINT64 bodyTId;
if (SUCCEEDED(hr3) && bTracked) {
// 获取跟踪id
hr3 = myBody[iFace]->get_TrackingId(&bodyTId);
if (SUCCEEDED(hr3)) {
// 更新跟踪id
myFaceFrameSources[iFace]->put_TrackingId(bodyTId);
}
}
}
}
destory(pFaceFrame);
}
faceframe kinect2.0 api 注意点相关推荐
- 天地图,js 4.0 api,简单调用,高手请绕行
本文介绍使用天地图 js4.0 api,实现地图显示后台gps分布情况: 主要借用H5 GPS获取,利用天地图的背景展示: 效果图如下: 第一步,通过采集网页,手机gps数据,录入后台数据库:界面如下 ...
- php 接口 2.0,YII 2.0 API接口开发
YII2.0 API接口开发 首先先安装 YII2.0 高级模板(安装请参考其他教程) 准备 添加数据库配置 common/config/main-local.php image 把backend目录 ...
- java.lang.LinkageError: JAXB 2.0 API is being loaded from the bootstrap classloader, but this RI(xxx
在使用webservice,mule esb等需要jaxb的项目里经常会出现 JAXB 2.0 API is being loaded from the bootstrap classloader这个 ...
- Kinect2.0获取数据
最近事情真是多,今天抽空研究一下Kinec2.0的数据获取! 系统要求 https://developer.microsoft.com/en-us/windows/kinect/hardware-se ...
- android preferenceactivity 源码,PreferenceActivity PreferenceScreen (3.0/API 11 以前)
Android提供了一个XML驱动的框架,用于为应用程序创建系统样式的PreferenceScreen. (3.0/API 11 以前)是这样使用的 看代码: mypreference.xml and ...
- Android 5.0 API 的变化——开发人员注意
Android 5.0 API变化 译自 http://developer.android.com/intl/zh-cn/about/versions/android-5.0.html -- By N ...
- 本周ASP.NET英文技术文章推荐[03/23 - 04/05]:C#、Visual Studio、MVC、死锁、Web 2.0 API、jQuery、IIS7、FileUpload...
摘要 本期共有9篇文章: 提高C#和Visual Studio 2008生产力的10个技巧 ASP.NET MVC Action过滤器:缓存和压缩 程序停止工作及其解决方法:第一部分:死锁 调用Dig ...
- 深度相机Kinect2.0三维点云拼接实验(三)
文章目录 概要 刚体空间旋转的描述 旋转矩阵 欧拉角 四元数 刚体空间平移的描述 总结 概要 Kinect2.0是微软推出的一款RGB-D相机,它即支持普通相机的拍摄,也支持脉冲测量深度信息.本系 ...
- android版本兼容API24,Android 7.0 (API 24) 适配
Android 7.0 (API 24) 适配 电池和内存 低电耗模式 此项新增的行为不会影响有关使您的应用适应Android 6.0(API级别23)中所推出的旧版本低电耗模式的建议和最佳做法,如对 ...
- Android开发者福利之--------Android 6.0 API
Android 6.0 API 着手开发 要着手开发 Android 6.0 应用,您必须先获得 Android SDK,然后使用 SDK 管理器下载 Android 6.0 SDK Platform ...
最新文章
- C#进阶系列——DDD领域驱动设计初探(五):AutoMapper使用
- JS的数据访问及优化访问速度
- PHP 遇见 Serverless,帮你解决这些痛点
- linux移植wifi sd8688.bin 最新固件,[ZZ]浅析firmware完整生存和使用流程
- 基于roslyn的动态编译库Natasha
- 【GTK】信号量(signal)大全
- sqlyog怎么查找表_VBA代码解决方案第58讲:在VBA中查找指定工作表的实用方法
- HDU-5781 ATM Mechine(概率DP)
- Lucene4:创建一个简单查询
- Java字符串相关的类详解
- 计算机职高会考知识,2013年金华市职高会考各科目考纲汇总.doc
- 高仿网易评论列表效果之数据准备
- html画圆中有个正方形,Adobe Illustrator CS6中绘画圆形及正方形的操作使用方法
- PG-FP6烧录机1拖16上位机项目
- Markdown入门指南【我为什么要推荐你学习Markdown?】
- 2021-09-10体脂模块做体脂秤方案,体脂秤模块原理解析
- 四年级计算机考试反思,小学四年级信息技术考试质量分析报告
- 工业级无线路由器无线客户端的配置教程
- 信息安全实训笔记1——身份认证技术
- android 笔试题大全,2018年Android面试题大全
热门文章
- Vuex 实战:如何在大规模 Vue 应用中组织 Vuex 代码 | 掘金技术征文
- STM32正交编码器驱动电机
- 整理Oracle日期时间函数
- awk双文件互相匹配查找
- ai怎么平均排列_一篇AI打麻将的论文,理科生眼中的麻将是这样的
- cls_template.php on line 1067,ecshop php5.5兼容utf-8版本
- 单机多实例数据库搭建过程
- 多线程id为什么是负的?原因
- 大数斐波那契数列(nyoj655)光棍的yy
- ios android c跨平台,Unity 使用C/C++ 跨平台终极解决方案(PC,iOS,Android,以及支持C/C++的平台)...