什么是datadisplay intfacee

梁山夫妻大办离婚庆典,两人亲自把喜字剪开。
让人意想不到的是,其中还有产妇和6个月孕妇。
声明:本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
  在7月23日举办的主题为&发车咯!有一些技巧只有老司机知道!&CVP系列开发者沙龙上,Intel大使沈大海为大家带来了&使用Intel
  RealSense技术和Cocos引擎开发AR游戏&的精彩分享。
  在演讲开始前,开发者们在现场亲身体验了沈老师带来的AR游戏。
  下面是整理的部分演讲实录。
  Cocos游戏开发引擎对于广大开发者来说都比较熟悉,Intel
  RealSense是什么呢,简单理解是一种特殊的摄像头,可以捕捉用户的手势,面部表情等,进而实现AR、VR的特殊应用。
  本案例介绍了如何通过摄像头结合Cocos引擎实现一款跑酷游戏:
  图1- Intel RealSense设备F200
  1. 游戏玩法:
  1.1玩家面向摄像头坐好
  1.2.当游戏主角前方有障碍物或陷阱时候迅速移动头部向左,游戏主角会跳起
  1.3. 通过头像识别和玩家的移动来躲避陷阱
  游戏截图如下:
  2.项目运行工程网盘地址:
  链接: /s/1ntB0kwL(密码: nzrd)
  3.项目源码网盘地址:
  链接: /s/1qWj9Iws(密码: buj6)
  4.开发和运行环境要求:
  4.1 Win7以上64位操作系统
  4.2 使用了Intel F200摄像头设备
  4.3 正确安装F200驱动程序(下载在)
  4.4 安装vs2013
  5.开发核心步骤
  5.1 登录下载最新版的cocos引擎源码,然后安装,并创建一个新的Cocos工程(此处略过10000字,详细方法可以登录),并使用vs打开。
  5.2. 重要,若要cocos支持RealSense设备需要加载库,可以通过属性表一次性完成该操作,在VS中找到【视图】【其他窗口】【属性管理器】,如下图:
  然后找到添加属性按钮,如下图:
  选择C:Program Files (x86)IntelRSSDKprops
  选择任意VS2010-13.Integration.MD.props 或者 VS2010-13.Integration.MT.props,如下图:
  在项目名上面右键,查看项目属性,检查是否加载成功,如下图:
  我们看到包含目录和库目录中已经有了关于RSSDK的内容,说明属性文件生效,但是这时候编译工程会出现找不到lib库的错误,解决方法如下:
  在库目录增加一行只想RSSDKsamplecommonlibx64v140
  然后编译项目,ok。
  6. 核心编码
  6.1 在AppDelegate中启动摄像头并在独立线程中更新数据。
  #include &CCStdC.h&
  #include #include #include #include #include #include #include
  引入以上库文件,在构造函数启动线程
  AppDelegate::AppDelegate(){
  std::threadt([&](){
  printf(&init realsencen&);
  PXCSession*session=PXCSession_Create();
  if(session)
  PXCSession::ImplVersionversion=session-&QueryVersion();
  CCLOG(&SDK Version is %d.%dn&,version.major,version.minor);
  session-&Release();
  ///////////////初始化rs模块
  PXCSenseManager*senseManager=PXCSenseManager::CreateInstance();
  if(senseManager)
  CCLOG(&intel PXCSenseManager ok&);
  senseManager-&EnableFace();//开启脸部识别模块
  CCLOG(&intel realsence EnableFace&);
  if(senseManager-&Init()==PXC_STATUS_NO_ERROR)
  CCLOG(&intel senseManager-&Init() ok&);
  // 获取faceModule
  PXCFaceModule*faceModule=senseManager-&QueryFace();
  PXCFaceData*faceData=faceModule-&CreateOutput();
  PXCFaceConfiguration*faceConfiguration=
  faceModule-&CreateActiveConfiguration();
  ////设置3d跟踪模式
  faceConfiguration-&SetTrackingMode(
  PXCFaceConfiguration::TrackingModeType::FACE_MODE_COLOR_PLUS_DEPTH);
  faceConfiguration-&detection.isEnabled=
  faceConfiguration-&ApplyChanges();
  boolquit=
  while(!quit)
  ////获取跟踪的坐标
  faceData-&Update();
  intfaceNum=faceData-&QueryNumberOfDetectedFaces();
  if(faceNum&0)
  PXCFaceData::Face*trackedFace=
  faceData-&QueryFaceByIndex(0);
  PXCFaceData::DetectionData*detectionData=
  trackedFace-&QueryDetection();
  PXCRectI32
  detectionData-&QueryBoundingRect(&rectangle);
  Game::x=rectangle.x;
  Game::y=rectangle.y;
  Game::w=rectangle.w;
  Game::h=rectangle.h;
  senseManager-&ReleaseFrame();
  faceData-&Release();
  faceConfiguration-&Release();
  senseManager-&Close();
  CCLOG(&intel realsence error2&);
  senseManager-&Release();
  CCLOG(&intel realsence error1&);
  t.detach();
  以上代码,会时时更新数据,捕获人脸的x,y,w,h在屏幕的坐标,缺省是640X360的范围,可以通过Log查看数据的变化。
  6.2 在GameScene中启动计划任务scheduleUpdate,并在每一帧处理。
  voidGame::update(floatt)
  //每帧保存一个点
  if(allPoint.size()autorelease();
  allPoint.pushBack(newp);
  MyPoint*newp=newMyPoint(x,y,w,h);
  newp-&autorelease();
  allPoint.eraseObject(allPoint.front());
  allPoint.pushBack(newp);
  intfarx=(allPoint.back()-&x-allPoint.front()-&x);
  std::stringstr=
  StringUtils::format(&%d %d %d %d %d&,x,y,w,h,farx);
  CCLOG(&%s&,str.c_str());
  if(farx&30&&farx_dir ==Stop)
  this-&_dir=Up;
  allPoint.clear();
  这里用60个点来记录每一帧人脸坐标的变化,通过计算是否有超过40像素的移动来确定玩家是否跳起(这里很偷懒,可以使用的人脸的点可以达到78个点)
  希望今天关于英特尔
  RealSense的分享能帮助到大家,谢谢!
欢迎举报抄袭、转载、暴力色情及含有欺诈和虚假信息的不良文章。
请先登录再操作
请先登录再操作
微信扫一扫分享至朋友圈
搜狐公众平台官方账号
生活时尚&搭配博主 /生活时尚自媒体 /时尚类书籍作者
搜狐网教育频道官方账号
全球最大华文占星网站-专业研究星座命理及测算服务机构
主演:黄晓明/陈乔恩/乔任梁/谢君豪/吕佳容/戚迹
主演:陈晓/陈妍希/张馨予/杨明娜/毛晓彤/孙耀琦
主演:陈键锋/李依晓/张迪/郑亦桐/张明明/何彦霓
主演:尚格?云顿/乔?弗拉尼甘/Bianca Bree
主演:艾斯?库珀/ 查宁?塔图姆/ 乔纳?希尔
baby14岁写真曝光
李冰冰向成龙撒娇争宠
李湘遭闺蜜曝光旧爱
美女模特教老板走秀
曝搬砖男神奇葩择偶观
柳岩被迫成赚钱工具
大屁小P虐心恋
匆匆那年大结局
乔杉遭粉丝骚扰
男闺蜜的尴尬初夜
客服热线:86-10-
客服邮箱:1.JAVA的JNI部分&
调用JNI的基类&
Java代码&&
<span style="color:#.&package&&&
<span style="color:#.&public&class&JNIBase
<span style="color:#.&{
<span style="color:#.&&&&&public&JNIBase(){}&&
<span style="color:#.&&&&&&&
<span style="color:#.&&&&&public&JNIBase(String&libraryName)
<span style="color:#.&&&&&{&
<span style="color:#.&&&&&&&&&loadLibrary(libraryName);&
<span style="color:#.&&&&&}&
<span style="color:#.&&&&&&
<span style="color:#.&&&&private&static&void&loadLibrary(String&libraryName)
<span style="color:#.&&&&{&&
<span style="color:#.&&&&&&&&System.loadLibrary(libraryName);&&
<span style="color:#.&&&&}&&
<span style="color:#.}&&
实现这个基类&
Java代码&&
<span style="color:#.&package&&&
<span style="color:#.&&&
<span style="color:#.&public&class&JNIOpencv&extends&JNIBase
<span style="color:#.&{&&
<span style="color:#.&&&&&public&JNIOpencv&(String&libraryName)
<span style="color:#.&&&&&{&&
<span style="color:#.&&&&&&&&&super(libraryName);&&
<span style="color:#.&&&&&}&&
<span style="color:#.&&&&&&&
<span style="color:#.&&&&public&JNIOpencv()
<span style="color:#.&&&&{&&
<span style="color:#.&&&&&&&&System.loadLibrary(&jniOpenCV&);&&
<span style="color:#.&&&&}&&
<span style="color:#.&&
<span style="color:#.&&&&public&native&int[]&detectFace(int&minFaceWidth,&int&minFaceHeight,&&
<span style="color:#.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&String&cascade,&String&filename);&&&
<span style="color:#.}&&
类中定义了一个detectFace方法,是要用C来实现的。&
编译好这个类后,要用在命令行用javah命令生成需要的.h的头文件:&
D:\Develop\Workspace\MyEclipse Professional2014\OpenCVTest\src&javah
-jni com.JNIOpencv
工程路径:D:\Develop\Workspace\MyEclipseProfessional 2014\OpenCVTest\src&
命令:javah
生成文件类型:-jni
类名:com.JNIOpencv
会生成一个名为com_JNIOpencv.h的头文件:&
<span style="color:#.&/*&DO&NOT&EDIT&THIS&FILE&-&it&is&machine&generated&*/&&
<span style="color:#.&#include&&jni.h&&&
<span style="color:#.&/*&Header&for&class&com_JNIOpencv&*/&&
<span style="color:#.&&&
<span style="color:#.&#ifndef&_Included_lveyo_bcndyl_jni_opencv_JNIOpencv&&
<span style="color:#.&#define&_Included_lveyo_bcndyl_jni_opencv_JNIOpencv&&
<span style="color:#.&#ifdef&__cplusplus&&
<span style="color:#.&extern&&C&&{&&
<span style="color:#.&#endif&&
<span style="color:#./*&
<span style="color:#.&*&Class:&&&&&com_JNIOpencv&
<span style="color:#.&*&Method:&&&&detectFace&
<span style="color:#.&*&Signature:&(IILjava/lang/SLjava/lang/S)[I&
<span style="color:#.&*/&&
<span style="color:#.JNIEXPORT&jintArray&JNICALL&Java_com_JNIOpencv_detectFace&&
<span style="color:#.&&(JNIEnv&*,&jobject,&jint,&jint,&jstring,&jstring);&&
<span style="color:#.&&
<span style="color:#.#ifdef&__cplusplus&&
<span style="color:#.}&&
<span style="color:#.#endif&&
<span style="color:#.#endif&&
2.C程序部分&
在VS2013中配置opencv,同时要将JDK中的include目录和include/win32目录都加入到VS2013的Include Files中。&
VS中在项目上右键打开属性 -& C/C&#43;&#43; -& 常规-& 附加包含目录: 添加jni对应的头文件
新建一个win32 MFC DLL项目jniOpenCV,把刚才生成的com_JNIOpencv.h头文件加入到项目,并且修改jniOpenCV.cpp文件:
C&#43;&#43;代码&&
<span style="color:#.&#include&&stdafx.h&&&
<span style="color:#.&#include&&jni.h&&&
<span style="color:#.&#include&&com_JNIOpencv.h&&&
<span style="color:#.&#include&&opencv/cv.h&&&
<span style="color:#.&#include&&opencv/highgui.h&&&
<span style="color:#.&&&
<span style="color:#.&JNIEXPORTjintArrayJNICALL
Java_com_JNIOpencv_detectFace&&
<span style="color:#.&&&(JNIEnv&*env,&jobject&obj,&jint&width,&jint&height,&jstring&cascade,&jstring&filename)&&
<span style="color:#.&{&&
<span style="color:#.&&&&const&char&*str_cascade,&*str_&&
<span style="color:#.&&&&str_cascade&=&env-&GetStringUTFChars(cascade,&false);&&
<span style="color:#.&&&&str_filename&=&env-&GetStringUTFChars(filename,&false);&&
<span style="color:#.&&
<span style="color:#.&&&&jintArray&faceArray =
<span style="color:#.&&&&CvHaarClassifierCascade&*cv_cascade&=&(CvHaarClassifierCascade*)cvLoad(&str_cascade&);&&
<span style="color:#.&&&&IplImage&*image&=&cvLoadImage(&str_filename,&1&);&&
<span style="color:#.&&&&&&
<span style="color:#.&&&&if(image!=0)
<span style="color:#.&&&&{&&
<span style="color:#.&&&&&&&&CvMemStorage*&storage&=&cvCreateMemStorage(0);&&
<span style="color:#.&&&&&&&&CvSeq*&&&
<span style="color:#.&&
<span style="color:#.&&&&&&&&//double&t&=&(double)cvGetTickCount();&&
<span style="color:#.&&&&&&&&/*&use&the&fastest&variant&*/&&
<span style="color:#.&&&&&&&&faces&=&cvHaarDetectObjects(&image,&cv_cascade,&storage,&1.2,&2,&&
<span style="color:#.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&CV_HAAR_DO_CANNY_PRUNING,&cvSize(width,&height)&);&&
<span style="color:#.&&&&&&&&//t&=&(double)cvGetTickCount()&-&t;&&
<span style="color:#.&&&&&&&&//printf(&&detection&time&=&%gms\n&,&t/((double)cvGetTickFrequency()*1000.)&);&
<span style="color:#.&&
<span style="color:#.&&&&&&&&const&int&total&=&faces-&&&
<span style="color:#.&&
<span style="color:#.&&&&&&&&faceArray&=&env-&&NewIntArray(4*total);&&
<span style="color:#.&&&&&&&&jint&faceBuf[4];&&
<span style="color:#.&&&&&&&&&&
<span style="color:#.&&&&&&&&for(&int&i&=&0;&i&&&&i&#43;&#43;&)&&
<span style="color:#.&&&&&&&&{&&
<span style="color:#.&&&&&&&&&&&&CvRect&face_rect&=&*(CvRect*)cvGetSeqElem(&faces,&i&);&&
<span style="color:#.&&&&&&&&&&&&int&pointX&=&face_rect.x;&&
<span style="color:#.&&&&&&&&&&&&int&pointY&=&face_rect.y;&&
<span style="color:#.&&&&&&&&&&&&int&faceWidth&=&face_rect.&&
<span style="color:#.&&&&&&&&&&&&int&faceHeight&=&face_rect.&&
<span style="color:#.&&
<span style="color:#.&&&&&&&&&&&&//printf(&i&%d,&x&%d,&y&%d,&width&%d,&height&%d\n&,&&
<span style="color:#.&&&&&&&&&&&&&&&&&&&&&&&&//&&&&&&&&i,pointX,pointY,faceWidth,faceHeight);&&
<span style="color:#.&&
<span style="color:#.&&&&&&&&&&&&faceBuf[0]&=&pointX;&&
<span style="color:#.&&&&&&&&&&&&faceBuf[1]&=&pointY;&&
<span style="color:#.&&&&&&&&&&&&faceBuf[2]&=&faceW&&
<span style="color:#.&&&&&&&&&&&&faceBuf[3]&=&faceH&&
<span style="color:#.&&
<span style="color:#.&&&&&&&&&&&&env-&SetIntArrayRegion(faceArray,i*4,4,faceBuf);&&
<span style="color:#.&&&&&&&&&&&&&&
<span style="color:#.&&&&&&&&}&&
<span style="color:#.&&&&&&&&&&
<span style="color:#.&&&&&&&&cvReleaseMemStorage(&&storage&);&&
<span style="color:#.&&&&&&&&cvReleaseImage(&&image&);&&
<span style="color:#.&&&&}&&
<span style="color:#.&&&&cvReleaseHaarClassifierCascade(&&cv_cascade&);&&&&
<span style="color:#.&&
<span style="color:#.&&&&env-&ReleaseStringUTFChars(cascade,&str_cascade);&&
<span style="color:#.&&&&env-&ReleaseStringUTFChars(filename,&str_filename);&&
<span style="color:#.&&&&return&faceA&&
<span style="color:#.}&&
编译生成jniOpenCV.dll。此处的检测代码是根据OpenCV的文档和示例程序修改。将生成的jniOpenCV.dll文件复制到%JAVA_HOME%/bin中,如果在没安装OpenCV的机器上运行,还需要将OpenCV安装目录中bin目录下所有dll文件一起复制到%JAVA_HOME%/bin中。
3.实现JAVA的调用
其中haarcascade_frontalface_alt2.xml文件在安装的opencv\sources\data\ haarcascades中,将其复制到代码中指定的文件夹中。图片也复制到相应文件夹中。
Java代码&&
<span style="color:#.&package&&&
<span style="color:#.&&&
<span style="color:#.&public&class&Test
<span style="color:#.&{&&
<span style="color:#.&&&&&public&static&void&main(String[]&args)
<span style="color:#.&&&&&{&&&&&&&&&&&&
<span style="color:#.&&&&&&&&&//初始化JNI调用类JNIOpencv&&
<span style="color:#.&&&&&&&&&JNIOpencv&open&=&new&JNIOpencv(&jniOpenCV&);&&
<span style="color:#.&&&
<span style="color:#.&&&&&&&&//要检测的图片文件&&
<span style="color:#.&&&&&&&&String&filename&=&&res/image/1.jpg&;&&
<span style="color:#.&&
<span style="color:#.&&&&&&&&//OpenCv提供的人间的特征文件&&
<span style="color:#.&&&&&&&&String&cascade&=&&res/haarcascade_frontalface_alt2.xml&;&
<span style="color:#.&&
<span style="color:#.&&&&&&&&//人脸检测,前两个参数为可检测的最小人脸的宽度和高度&&
<span style="color:#.&&&&&&&&//返回&#20540;为人脸在图中的坐标和宽高,{x,&y,&width,&height}&&
<span style="color:#.&&&&&&&&int[]&faces&=&open.detectFace(40,&40,&cascade,&filename);&&
<span style="color:#.&&&&&&&&if(faces&!=&null&&&&faces.length!=0)
<span style="color:#.&&&&&&&&{&
<span style="color:#.&&&&&&&&&&&&//返回的人脸总数&&
<span style="color:#.&&&&&&&&&&&&System.out.println(&&faces&&&&#43;&faces.length/4&);&&
<span style="color:#.&&
<span style="color:#.&&&&&&&&&&&&//分别输出每个人脸的坐标信息&&
<span style="color:#.&&&&&&&&&&&&for&(int&temp&:&faces)
<span style="color:#.&&&&&&&&&&&&&{&&
<span style="color:#.&&&&&&&&&&&&&&&&System.out.println(temp);&&
<span style="color:#.&&&&&&&&&&&&}&&
<span style="color:#.&&&&&&&&}&&
<span style="color:#.&&&&}&&
<span style="color:#.} &
配置JRE环境:
1.&&&&&&工程名右键 -& Build Path -& Configure Build Path -& Libraries 调整JRE SystemLibrary 为32位的可用Library。
2.&&&&&&工程名右键 -& Run As -& Run Configurations -& Libraries -& JRE调整Runtime JRE与步骤1中一致。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:2098次
排名:千里之外
(1)(1)(2)(1)(3)(1)}

我要回帖

更多关于 display intface 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信