Face++ 人脸识别

简介

本文简单说明Face++ android 人脸检测器的使用方法,在线和离线人脸识别算法,算法支持android ios。最好给出结合Cocos2d-x应用。

注意:SDK 中包含armeabi 以及armeabi-v7a 两种架构的编译版本,其中armeabi 架构由于缺少浮点运算指令,因此运行速度仅能达到armeabi-v7a 编译版本的一半水平,请根据需求选用。

相关文件

demo.zip:离线检测器使用示例工程
doc.zip:SDK 接口javadoc 描述
libs/faceapi.jar SDK 接口
libs/armeabi SDK :依赖库(armeabi 架构)
libs/armeabi-v7a SDK :依赖库(armeabi-v7a 架构)

使用流程

本节内容通过介绍demo 工程来讲解SDK 的使用方式。

  1. 建立一个java 工程。
  2. 在AndroidManifest.xml 中添加权限
  3. 根据需求选择离线SDK 中依赖库以及libs/faceapi.jar 拷入工程内的libs 文件夹内,例如若APP 的运行环境为armeabi 架构,如下图所示: libs-faceapi
  4. 接着,在程序中初始化一个com.faceplusplus.api.FaceDetector 类。注意,类初始化时需要使用到当前context 以及使用者对应的API_Key, 这个API_Key 必须与下载离线检测器的App 对应的API_Key 一致才可以正确调用这个库。下面是一个调用示例:
    1. 初始化 :libs-faceapi-init
    2. 检测,并获取检测结果: libs-faceapi-detecter
    3. 若图像由摄像头采集,则原始数据将以YUV 格式存储,可以先将图像旋转到正确的方向后使用灰度图的形式传入检测器 libs-faceapi-detecter-yuv
  5. 离线检测器与线上API 的协同功能:如果需要用到线上API 的更多功能,可以将本地的检测结果直接上传(从而节省传输的数据量,仅会上传脸部图像)。使用离线SDK 中HttpRequest 的新方法offlineDetect,可将离线结果直接同步至线上,并获取face_id 进行后续操作,如下图所示:  libs-faceapi-detecter-http

库及key

本节提供库:http://pan.baidu.com/s/1i9szc

及下面是Key

  • API Key:636c34abb317f0c62985cabd73ebc8c8
  • API Secret:TCLJv-6PZtqSzVbthX0r2-IElnpW3z1t
  • API Url:apicn.faceplusplus.com

在Cocos2d-x应用人脸识别

静态检测

  1. 利用摄像机拍照保存图像RGBA8888,路径存到安卓程序的目录下,获取目录函数:FileUtils::getInstance()->getWritablePath()
  2. 和JNI交互使用,参考cocosplatformandroidjava下面的Cocos2dxHelper.java,及jni下面的Java_org_cocos2dx_lib_Cocos2dxHelper

动态检测

需要把摄像机嵌入到cocos2d-x里,有空就写个教程出来。