An android wrapper of MegviiFacepp SDK (the mobile SDK).
Facepp人脸检测SDK是旷视科技推出的人脸检测工具包,提供快速,简洁的开发接口,支持Android4.2及以上的移动设备上实现人脸检测
FaceppSDK包含demo、sdk、docs三部分,demo和sdk可以查看github
本文档为技术文档,需要阅读者具有基本的Android开发能力,如果想对c定制开发需要有基本的c开发能力。
FaceppSDK是适用android平台下的人脸检测SDK,提供aar,jar,c的三种接入方式,提供了简捷的接口方便接入。
红色:为demo module,展示用户集成部分
蓝色:为sdk module,如果需要定制开发,或者更高的效率,可以自己开发jni部分。
* Demo Module的目录如下:
红色:sdk module编译的aar,如非需要定制可直接使用
蓝色:为联网授权aar,如果是离线授权可以去掉,另外联网授权申请的key和secret需要添加到/faceppdemo/src/main/java/com/facepp/demo/util/Util.java,还需要申请一个工程的applicationId的bundle。
绿色:为申请到的module,是人脸检测的训练模型
下面采用最常用的获取人脸关键流程来讲解,常用API。
初始化实例
java facepp = new Facepp();初始化模型,如果模型加载失败,会有相应的code提示
java String errorCode = facepp.init(this, ConUtil.getFileContent(this, R.raw.megviifacepp_0_5_2_model), isOneFaceTrackig ? 1 : 0);
主要根据需要的模型的能力去设置detectionMode,其他的参数使用默认即可
java Facepp.FaceppConfig faceppConfig = facepp.getFaceppConfig(); faceppConfig.detectionMode = Facepp.FaceppConfig.DETECTION_MODE_TRACKING_FAST; facepp.setFaceppConfig(faceppConfig);
这里会获取检测到人脸的数目,和人脸框置信度等基本信息。参数为检测图片的属性,imageMode目前支持两种bgr nv21
java final Facepp.Face[] faces = facepp.detect(imgData, width, height, Facepp.IMAGEMODE_NV21);
获取人脸的关键点,tracking检测的会做平滑,参数pointNum有81点和106点
java facepp.getLandmarkRaw(faces[c], Facepp.FPP_GET_LANDMARK81);
释放资源
java facepp.release();
切换摄像头需要重置track
java facepp.resetTrack();
v0.5.2 * sdk 1. 增加detectrect模式:只输出人脸框 2. 删除tracknormal模式,内部将tracknormal映射成trackrobust,并提示用户此模式已废弃,以后会在接口中直接删除 3. 接口变化 3.1 增加 CreateApiHandleWithMaxFaceCount,在初始化时设置最大跟踪的人脸数。config中onefacetracking被废弃 3.2 增加 GetJenkinsNumber 输出jenkins打包时版本号,方便调试 3.3 增加 ResetTrack 清除track缓存 3.4 增加 GetRect 在detectrect模式下,输出人脸框信息 3.5 更新 GetAlgorithmInfo ,增加返回限制的bundleid 3.6 更新 MGFPPAPICONFIG, 增加 faceconfidencefilter,人脸置信度过滤阈值,低于此值的数据将被过滤掉,默认 0.1 3.7 单脸跟踪需在初始化时设置,初始化接口增加了最多跟踪几张人脸的参数。默认为0,不限制。设置中的oneface_tracking已失效 * demo 1. 简化在线授权的逻辑。 2. module的合并 3. 增加人脸比对