# MegviiFacepp-Android-SDK **Repository Path**: chen3441251/MegviiFacepp-Android-SDK ## Basic Information - **Project Name**: MegviiFacepp-Android-SDK - **Description**: An android wrapper of MegviiFacepp SDK (the mobile SDK). - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-08-24 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Facepp人脸检测SDK集成说明文档 ## 一、简介 Facepp人脸检测SDK是旷视科技推出的人脸检测工具包,提供快速,简洁的开发接口,支持Android4.2及以上的移动设备上实现人脸检测 ### 功能特性 * 支持人脸的fast检测 * 支持人脸的robust检测 * 支持获取人脸关键点 * 支持人脸比对 * 支持获取人脸框 * 支持检测年龄性别 * 支持获取3dpose * 支持 ARMv7a和ARM64v8a架构 * 支持Android 4.2及以上系统 * 快速,库文件小,贴合度高 ### 组件及资源 FaceppSDK包含demo、sdk、docs三部分,[demo和sdk可以查看github](https://github.com/FacePlusPlus/MegviiFacepp-Android-SDK) * demo部分:里面包含一个示例工程,实现了人脸检测的功能,有完整的源代码。 * sdk部分:里面包含了一套jni的封装,可以实现aar和c的两种集成方式。 * 库文件:人脸检测的实现库,路径以及目录如下sdk/src/main/jniLibs ├── armeabi-v7a │ ├── libmegface-new .so │ ├── libMegviiFacepp-0.5.2 .so ├── arm64-v8a │ ├── libmegface-new .so │ ├── libMegviiFacepp-0.5.2 .so * 模型文件:人脸检测的训练模型,模型目前分在线授权和离线授权两种,路径/faceppdemo/src/main/res/raw/megviifacepp_0_5_2_model > 试⽤版SDK有使用时间和使用次数的限制,如需正式版请通过[Face++官网](https://www.faceplusplus.com.cn)联系商务合作。 ## 二、开发指南 ### 阅读对象 本文档为技术文档,需要阅读者具有基本的Android开发能力,如果想对c定制开发需要有基本的c开发能力。 ### 文档综述 FaceppSDK是适用android平台下的人脸检测SDK,提供aar,jar,c的三种接入方式,提供了简捷的接口方便接入。 ### 开发准备 #### 在线授权的准备 1. [官网](https://www.faceplusplus.com.cn/)注册账号 2. 申请[key和secret](https://console.faceplusplus.com.cn/dashboard),用于在线授权。 3. 申请[Bundle ID(applicationId)](https://console.faceplusplus.com.cn/dashboard),用于模型的验证。 ### 集成SDK 1. 启动Android Studio,并导入工程(以MegviiFacepp-Android-SDK 0.5.2版本为例) 2. 已有工程导入SDK * Demo Project目录如下: 红色:为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接口介绍 下面采用最常用的获取人脸关键流程来讲解,常用API。 ##### 1. 初始化SDK 初始化实例 ```java facepp = new Facepp(); ``` 初始化模型,如果模型加载失败,会有相应的code提示 ```java String errorCode = facepp.init(this, ConUtil.getFileContent(this, R.raw.megviifacepp_0_5_2_model), isOneFaceTrackig ? 1 : 0); ``` #### 2. 检测参数设置 主要根据需要的模型的能力去设置detectionMode,其他的参数使用默认即可 ```java Facepp.FaceppConfig faceppConfig = facepp.getFaceppConfig(); faceppConfig.detectionMode = Facepp.FaceppConfig.DETECTION_MODE_TRACKING_FAST; facepp.setFaceppConfig(faceppConfig); ``` #### 3.人脸检测 这里会获取检测到人脸的数目,和人脸框置信度等基本信息。参数为检测图片的属性,imageMode目前支持两种bgr nv21 ```java final Facepp.Face[] faces = facepp.detect(imgData, width, height, Facepp.IMAGEMODE_NV21); ``` #### 4.获取关键点 获取人脸的关键点,tracking检测的会做平滑,参数pointNum有81点和106点 ```java facepp.getLandmarkRaw(faces[c], Facepp.FPP_GET_LANDMARK81); ``` #### 5.释放资源 释放资源 ```java facepp.release(); ``` #### 6.切换摄像头 切换摄像头需要重置track ```java facepp.resetTrack(); ``` ## 版本更新 v0.5.2 * sdk 1. 增加detect_rect模式:只输出人脸框 2. 删除track_normal模式,内部将track_normal映射成track_robust,并提示用户此模式已废弃,以后会在接口中直接删除 3. 接口变化 3.1 增加 CreateApiHandleWithMaxFaceCount,在初始化时设置最大跟踪的人脸数。config中one_face_tracking被废弃 3.2 增加 GetJenkinsNumber 输出jenkins打包时版本号,方便调试 3.3 增加 ResetTrack 清除track缓存 3.4 增加 GetRect 在detect_rect模式下,输出人脸框信息 3.5 更新 GetAlgorithmInfo ,增加返回限制的bundleid 3.6 更新 MG_FPP_APICONFIG, 增加 face_confidence_filter,人脸置信度过滤阈值,低于此值的数据将被过滤掉,默认 0.1 3.7 单脸跟踪需在初始化时设置,初始化接口增加了最多跟踪几张人脸的参数。默认为0,不限制。设置中的one_face_tracking已失效 * demo 1. 简化在线授权的逻辑。 2. module的合并 3. 增加人脸比对