百度人脸识别集成

百度人脸识别集成

一、Demo体验

1.1 替换license文件

将官方下载的Demo用AndroidStudio打开,将申请SDK时得到的license文件添加到app->src->main->assets下。

1.2 修改包名

将app.gradle和AndroidManifest.xml里的包名改成申请license的填入的包名。

1.3 配置打包签名

申请的license已经和打包签名key进行了绑定(申请时用到了签名的md5,为了便于debug模式也能调用SDK的功能,需要把debug的key改成申请license的key。

1.4 修改SDK初始化参数

二、集成

2.1 引入faceplatform-release库

将开发包中的faceplatform-release库 Import Module 到工程。

2.2 引入faceplatform-ui库

将开发包中的faceplatform-ui库 Import Module 到工程。

2.2.1 faceplatform-ui库

SDK提供的了开源的faceplatform-ui库,把活体检测和人脸图像采集功能等功能进行了封装,适配了主流机型。如果需要使用,请添加faceplatform-ui模块到的工程中。faceplatform-ui目录结构如下图:

2.2.2 添加faceplatform-ui库

在build.gradle使用compile project引人faceplatform-ui库工程。

2.3 配置Setting.gradle

Setting.gradle中include faceplatfrom-ui和facepaltfrom-release。

备注:一般到这一步就自动配置好了,以防万一,再检查一遍。

2.4 添加授权文件

从官网下载授权文件license,复制到 app/src/main/assets/license目录下。

2.5 配置打包签名

2.6 权限声明

三、 功能使用

3.1 初始化SDK

FaceSDKManager.getIntance().initialize(context, appname-face-android,“idl-license.face-android”);

备注:此段代码在Demo中的MainActivity中。

3.2 设置人脸检测参数

com.baidu.idl.face.platform.FaceConfig 类用于人脸检测参数设置。

3.3 活体检测

3.3.1 使用步骤

  1. 调用FaceSDKManager.getIntance().initialize(context, appname-face-android,“idl-license.face-android”);初始化SDK。
  2. FaceEnvironment 相应的方法设置,提示音&提示语资源。(非必须)
  3. 初始化相机。注册预览回调,开启预览。
  4. 调用FaceSDKManager.getInstance().getLivenessStrategyModule() 获得ILivenessStrategy对象。(该方法每次调用都会返回一个新对象).
  5. 调用 ILivenessStrategy.setPreviewDegree();设置预览图片的旋转角度。调用setDetectStrategySoundEnable设置是否开启语音。调用setDetectStrategyConfig设置,预览图的大小,人脸检测框的坐标和回调。
  6. 多次调用livenessStrategy进行人脸图片采集,人脸跟踪。
  7. 实现ILivenessStrategyCallback的onLivenessCompletion并处理结果。

3.3.2 使用faceplatform-ui库提供的U进行活体检测

活体检测界面FaceLivenessActivity,包括UI界面,系统相机控制,使用活体检测器ILivenessStrategy处理相机采集到的图像,完成活体检测功能。

3.3.2.1 代码

/**
 * 人脸识别页面
 */
public class FaceLivenessExpActivity extends FaceLivenessActivity {


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }


    @Override
    public void onLivenessCompletion(FaceStatusEnum status, String message, HashMap<String, String> base64ImageMap) {
        super.onLivenessCompletion(status, message, base64ImageMap);
        if (status == FaceStatusEnum.OK && mIsCompletion) {
            Toast.makeText(this,"活体检测--检测成功",Toast.LENGTH_SHORT).show();
        } else if (status == FaceStatusEnum.Error_DetectTimeout ||
                status == FaceStatusEnum.Error_LivenessTimeout ||
                status == FaceStatusEnum.Error_Timeout) {
            Toast.makeText(this,"活体检测--采集超时",Toast.LENGTH_SHORT).show();
        }
    }

    @Override
    public void finish() {
        super.finish();
    }
}

3.3.2.2 manifest注册

3.4 图像采集

3.4.1 使用步骤

  1. 调用FaceSDKManager.getIntance().initialize(context, appname-face-android, l idl-license.face-android”);初始化SDK.。
  2. FaceEnvironment 相应的方法设置,提示音&提示语资源。(非必须)
  3. 初始化相机。注册预览回调,开启预览。
  4. 调用FaceSDKManager.getInstance().getDetectStrategyModule() 获得IDetectStrategy对象。(该方法每次调用都会返回一个新对象).
  5. 调用 IDetectStrategy.setPreviewDegree();设置预览图片的旋转角度。调用setDetectStrategySoundEnable设置是否开启语音。调用setDetectStrategyConfig设置,预览图的大小,人脸检测框的坐标和回调。
  6. 多次调用detectStrategy进行人脸图片采集。
  7. 实现IDetectStrategyCallback的onDetectCompletion并处理结果。

3.4.2 使用faceplatform-ui库提供的U进行图像采集

人脸图像采集器界面FaceDetectActivity,包括UI界面,系统相机控制,使用人脸图像采集器IDetectStrategy处理相机采集到的图像。

3.4.2.1 代码

/**
 * 人脸跟踪图像采集界面
 */

public class FaceDetectExpActivity extends FaceDetectActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }


    @Override
    public void onDetectCompletion(FaceStatusEnum status, String message, HashMap<String, String> base64ImageMap) {
        super.onDetectCompletion(status, message, base64ImageMap);
        if (status == FaceStatusEnum.OK && !mIsCompletion) {
            Toast.makeText(this,"人脸图像采集--检测成功",Toast.LENGTH_SHORT).show();
        } else if (status == FaceStatusEnum.Error_DetectTimeout ||
                status == FaceStatusEnum.Error_LivenessTimeout ||
                status == FaceStatusEnum.Error_Timeout) {
            Toast.makeText(this,"人脸图像采集--采集超时",Toast.LENGTH_SHORT).show();
        }
    }

    @Override
    public void finish() {
        super.finish();
    }
}

3.4.2.2 manifest注册

3.5 界面定制

  1. 修改界面方式,替换布局文件或图片资源文件。
  2. 修改提示语音音频文件,有两种方式:

    1.1 直接替换FaceUI工程raw下的mp3文件和string.xml。

    1.2 FaceEnvironment 提供了setSoundId(FaceStatusEnum status, int soundId); 设置提示音资源。FaceStatusEnum为不同的状态。soundId为资源文件所对应的resource id. //TODO 都支持哪些音频格式? 和setTipsId(FaceStatusEnum status, int tipsId); 设置提示语。

四、 常见问题

4.1 license文件有什么用,该放在什么地方?

license文件需要申请,目的是作为sdk校验开发者的使用合法性,license文件放置位置 不对或未放置license文件会导致没法使用sdk,一般应先申请license文件,并把申请得到的license文件,放置在assets目录下面。

4.2 appname没有替换成你自己的appname?

应该在初始化sdk时候,如: FaceSDKManager.getInstance().initialize(this, “appname-face-android”); 其中appname为你申请的应用名称。

4.3 license文件失效了,不能用了怎么办?

icense文件申请时候有期限,如过期会导致校验失效,需要上官网申请延期。

4.4 活体检测常见有那些动作?是否可配置?

常见有6个动作,眨眼,张大嘴,向上抬头,向下低头,向左摇头,向右摇头等。 sdk提供传入设置参数,如活体检测角度、光线,检测动作,检测动作数量等设置。

4.5 使用sdk一般会用到活体检测拍照等功能,有什么需要注意?

android6.0+需要注意相机拍摄权限问题。如没申请权限,可能导致没法调起相机。

猜你喜欢

转载自blog.csdn.net/u013491677/article/details/78396290