接口调用流程

1.初始化

  1. 创建LivenessDetector对象detector
  2. 通过detector调用createHandle()创建handle
  3. 第二步成功后通过detector代用start(int config) config配置为json解析后转换的值,格式类似于int config = outputType | STFinanceJNI.WRAPPER_LOG_LEVEL_ONLY_EXTERN | complexity

    a. outputType值有

     STFinanceJNI.WRAPPER_OUTPUT_TYPE_SINGLE_IMAGE,
     STFinanceJNI.WRAPPER_OUTPUT_TYPE_MULTI_IMAGE, 
     STFinanceJNI.WRAPPER_OUTPUT_TYPE_LOW_QUALITY_VIDEO, 
     STFinanceJNI.WRAPPER_OUTPUT_TYPE_HIGH_QUALITY_VIDEO;
    

    b. complexity值有

     STFinanceJNI.WRAPPER_COMPLEXITY_EASY, 
     STFinanceJNI.WRAPPER_COMPLEXITY_NORMAL, 
     STFinanceJNI.WRAPPER_COMPLEXITY_HARD, 
     STFinanceJNI.WRAPPER_COMPLEXITY_HELL
    

2.启动检测

  1. 通过detector调用setStaticInfo(int key, java.lang.String input)设置静态信息(参考STLivenessLibrary里FaceOverlapFragment.java中的setWrapperStaticInfo方法)

  2. 通过detector调用addSequentialInfo(int key, java.lang.String input)设置传感器信息(参考STLivenessLibrary里LivenessActivity.java中的onSensorChanged方法)

  3. 通过detector调用detect(byte[] image, int width, int height,int rotateAngle, Motion motion)方法,其中images为图片byte数组格式的数据,width为图片宽度,height为图片高度,rotateAngle为相机的方向信息(mCameraInfo.orientation),motion为当前检测的动作

  4. 判断status.getDetectStatus() == DetectStatus.PASSED.getValue() && status.isPassed()则表示当前检测动作通过,可以进入下一个动作,循环检测,直到所有的动作完成

3.结束检测

调用end()结束检测

4.获取检测结果

  1. 通过detector调用getImageResult()获取活体检测保存的图片,返回数据格式为CVFinanceFrame[]。CVFinanceFrame结构体中包含了byte[] imageBytes(图片数据),int length(图片buffer大小),int motion(图片对应的动作)

  2. 通过detector调用getLivenessResult()获取活体检测保存的加密文件,返回格式为byte[]

  3. 通过detector调用detector.destroy(),回收内存

results matching ""

    No results matching ""