Linux-ARM-SDK
所有文档

          人脸识别

          Linux-ARM-SDK

          版本日志

          版本 日期 更新说明
          v4.1 2020.07.20 1、升级Paddle Lite版本,降低端到端全流程人脸识别耗时;
          2、增加口罩检测功能,支持对用户是否佩戴口罩这个属性进行检测;
          3、新增激活工具,该工具支持在连网状态下通过授权序列号完成激活
          v4.0 2020.02.27 1、全面升级人脸检测、关键点检测模型,提升人脸检测和追踪的准确率,解决部分场景下的人脸漏检问题;
          2、全面升级三模态活体检测模型,提升RGB、NIR、Depth三模态活体检测的准确率;
          3、全面优化人脸特征抽取和特征比对模型,提升人脸识别模型的准确率和泛化性;
          4、全面重构SDK的接口设计,降低二次开发难度的同时提升了二次开发的灵活性

          目录

          1、快速使用说明
              1.1 配置环境准备
              1.2 构建demo工程
              1.3 运行demo示例
              1.4 二次开发介绍
          2、接口文档说明
              2.1 状态码说明
              2.2 SDK实例对象
                  2.2.1 创建人脸SDK实例对象
                  2.2.2 销毁人脸SDK实例对象
              2.3 图像实例对象
                  2.3.1 创建图像实例
                  2.3.2 销毁图像实例
                  2.3.3 图像实例转换
                  2.3.4 图像实例转换
              2.4 预测库接口
                  2.4.1 获取预测库默认配置
              2.5 日志系统
                  2.5.1 控制日志输出接口
                  2.5.2 获取指定日志类型的开启状态
              2.6 人脸检测接口
                  2.6.1 获取检测默认配置参数
                  2.6.2 加载人脸检测能力
                  2.6.3 卸载人脸检测能力
                  2.6.4 人脸检测接口
              2.7 人脸关键点提取接口
                  2.7.1 获取align默认配置参数
                  2.7.2 加载人脸关键点检测能力
                  2.7.3 卸载人脸关键点检测能力
                  2.7.4 提取人脸关键点
              2.8 人脸静默活体检测接口
                  2.8.1 获取活体检测默认配置参数
                  2.8.2 加载静默活体检测能力
                  2.8.3 卸载静默活体检测能力
                  2.8.4 静默活体检测接口
              2.9 人脸特征值提取
                  2.9.1 获取特征值默认配置参数
                  2.9.2 加载特征提取能力
                  2.9.3 卸载人脸识别能力
                  2.9.4 人脸特征值提取接口
                  2.9.5 人脸RGBD特征提取接口
                  2.9.6 人脸特征值比对接口
              2.10 人脸属性接口
                  2.10.1 获取属性默认配置参数
                  2.10.2 加载人脸属性检测能力
                  2.10.3 卸载人脸属性检测能力
                  2.10.4 人脸属性检测
              2.11 人脸模糊度检测接口
                   2.11.1 获取人脸模糊度检测默认配置参数
                   2.11.2 加载人脸模糊度检测能力
                   2.11.3 卸载人脸模糊度检测能力
                   2.11.4 人脸模糊度检测
              2.12 人脸检测接口
                   2.12.1 加载图像抠图能力
                   2.12.2 卸载扣图能力
                   2.12.3 根据给定的人脸关键点进行扣图
                   2.12.4 根据给定的人脸框进行扣图
              2.13 注意力检测接口
                   2.13.1 获取注意力默认配置参数
                   2.13.2 加载注意力检测能力
                   2.13.3 卸载注意力检测能力
                   2.13.4 注意力检测接口
              2.14 人脸姿态角检测
                   2.14.1 加载人脸姿态角检测能力
                   2.14.2 卸载人脸姿态角检测能力
                   2.14.3 人脸姿态角检测
              2.15 人脸光照检测接口
                   2.15.1 加载人脸光照强度检测能力
                   2.15.2 卸载人脸光照强度检测能力
                   2.15.3 人脸光照强度检测接口
              2.16 闭嘴检测接口
                   2.16.1 获取属性默认配置参数
                   2.16.2 加载人脸嘴巴闭合检测能力
                   2.16.3 卸载人脸嘴巴闭合检测能力
                   2.16.4 人脸闭嘴检测接口
              2.17 眼睛闭合状态检测接口
                   2.17.1 获取闭眼默认配置参数
                   2.17.2 加载眼睛闭合检测能力
                   2.17.3 卸载眼睛闭合检测能力
                   2.17.4 眼睛闭合检测接口
              2.18 人脸遮挡度检测接口
                   2.18.1 获取人脸遮挡默认配置参数
                   2.18.2 加载人脸遮挡检测能力
                   2.18.3 卸载人脸遮挡检测能力
                   2.18.4 人脸遮挡检测接口
              2.19 人脸跟踪接口
                   2.19.1 获取人脸跟踪默认配置参数
                   2.19.2 加载人脸跟踪能力
                   2.19.3 卸载人脸跟踪能力
                   2.19.4 人脸跟踪接口
                   2.19.5 清除历史人脸跟踪数据接口
              2.20 动作活体
                   2.20.1 获取动作活体默认配置
                   2.20.2 加载动作活体能力
                   2.20.3 卸载动作活体能力
                   2.20.4 动作活体检测接口
                   2.20.5 清除动作活体检测历史数据

          本文主要介绍如何使用交叉编译方式快速生成示例demo及运行,供用户参考进行二次开发

          1、快速使用说明

          1.1 配置环境准备

          • 1、x86_64的宿主机PC一台,搭载Linux操作系统(建议ubuntu-16.04或18.04发行版)
          • 2、cmake工具,版本大于3.2 (ubuntu系统可通过apt install cmake安装)
          • 3、交叉编译工具链(与您的arm开发板相匹配,通常开发板厂商会提供对应的交叉编译工具)

          根据arm开发板的架构不同,所使用的交叉编译器也不一样,具体对应方式如下:

          开发板架构 对应编译器
          armv7 arm-linux-gnueabi-gcc
          armv7hf arm-linux-gnueabihf-gcc
          armv8 aarch64-linux-gnu-gcc

          可通过以下方法查看开发板的架构:

          # 登录开发板终端,输入下面命令
          uname -a 

          请确认宿主机的交叉编译工具已经安装成功
          验证方法:可通过在宿主机的终端里输入以下三条命令中的对应一条命令(根据开发板架构选择对应测试命令)

          # 测试armv7交叉编译工具是否安装成功 
          arm-linux-gnueabi-gcc -v
          # 测试armv7hf交叉编译工具是否安装成功
          arm-linux-gnueabihf-gcc -v
          # 测试armv8交叉编译工具是否安装成功
          aarch64-linux-gnu-gcc -v

          如果输入对应命令后,终端输出了交叉编译器的版本信息,则表示环境已经就绪,可跳至第二节进行后续工程配置;
          如果未能输出对应的交叉编译器版本信息,则表示您的交叉编译环境未配置成功,请重新配置您的交叉编译器(参考下面分割线内的流程),直至上述验证通过。


          以下安装流程仅供参考,具体对应编译器请以你手中的开发板厂商提供的为准

          1. 假设您的开发板为armv7hf架构,对应交叉编译器安装包为gcc-linaro-5.4.1-2017.01-x86_64_arm-linux-gnueabihf.tar.gz
          2. 首先将其解压到宿主机的某个路径下,例如:
          # 解压编译工具至/opt目录
          tar -xJf gcc-linaro-5.4.1-2017.01-x86_64_arm-linux-gnueabihf.tar.xz -C /opt/
          1. 此时编译器arm-linux-gnueabihf-gcc所在的绝对路径为/opt/gcc-linaro-5.4.1-2017.01-x86_64_arm-linux-gnueabihf/bin/,将该路径添加到系统环境变量PATH里,执行下面的命令
          # 增加环境变量
          echo "export PATH=/opt/gcc-linaro-5.4.1-2017.01-x86_64_arm-linux-gnueabihf/bin:$PATH" >> ~/.bashrc
          source ~/.bashrc
          # 测试查看编译器版本信息,若正常输出版本信息则为安装成功
          arm-linux-gnueabihf-gcc -v

          1.2 构建demo工程

          步骤一:首先请您确认已获取armlinux 4.0压缩包:Baidu_Face_Offline_SDK_Linux_Cpp_ARM.zip

          步骤二:将其解压后,获得两个压缩包与一个说明文档,将这两个压缩包分别解压后,得到的整个目录结构如下图所示:
             ├── BaiduFace_Offline_SDK_Linux_Cpp_ARM.zip
          └── '百度人脸离线识别SDK_Linux ARM版'
          ├── face-sdk
          ├── face-sdk-demo
          ├── 人脸离线识别SDK_Linux ARM版.zip
          ├── 人脸离线识别SDK_Linux ARM版_Demo.zip
          └── 人脸离线识别SDK_Linux ARM版
          接口文档.pdf

          请您务必确认在后续编译或运行时face-sdk文件夹与face-sdk-demo文件夹都在同一目录下

          步骤三:进入face-sdk-demo路径:

          cd face-sdk-demo

          步骤四:根据您的开发板架构选择下述命令之一进行demo的交叉编译:

          # 编译用于armv7开发板的用户demo
          ./build_cross_compiler.sh armv7
          # 编译用于armv7hf开发板的用户demo
          ./build_cross_compiler.sh armv7hf
          # 编译用于armv8开发板的用户demo
          ./build_cross_compiler.sh armv8

          编译成功后会在face-sdk-demo/build路径下生成可执行程序face_demo

          1.3 运行demo示例

          步骤一:将编译成功后的face-sdk文件夹与face-sdk-demo文件夹拷贝至您的开发板

          依旧请务必缺认:face-sdk与face-sdk-demo在开发板上也是同一路径下

          步骤二:通过开发板终端进入face-sdk-demo路径
          步骤三:运行demo,根据开发板架构选择下述命令之一:

          # 运行armv7版demo
          ./run.sh armv7
          # 运行armv7hf版demo
          ./run.sh armv7hf
          # 运行armv8版demo
          ./run.sh armv8

          步骤四:获取硬件指纹(device id)
          运行成功会打印出device id,如果您未获取授权文件,则显示授权失败,此时,您需要联系百度AI的对应工作人员并提供这个device id,获取对应授权文件并按指示放在对应路径下,即可成功运行整个demo程序

          1.4 二次开发介绍

          • face-sdk 是百度AI为您提供的核心功能库及其接口,详细接口功能及参数请参考文档《人脸离线识别SDKLinux ARM版接口文档.pdf》
          • face-sdk-demo 是以源码形式为您展示的快速使用示例,您可以参考里面的使用代码快速实现您的人脸AI业务

          2、接口文档说明

          2.1 状态码说明

          enum BDFaceStatusCode {
          OK = 0 , // 成功
          ILLEGAL_PARAMS = -1, // 非法的参数
          MEMORY_ALLOCATION_FAILED = -2, // 内存分配失败
          INSTANCE_IS_EMPTY = -3, // 实例对象为空
          MODEL_IS_EMPTY = -4, // 模型内容为空
          UNSUPPORT_ABILITY_TYPE = -5, // 不支持的能力类型
          UNSUPPORT_INFER_TYPE = -6, // 不支持的预测库类型
          NN_CREATE_FAILED = -7, // 预测库对象创建失败
          NN_INIT_FAILED = -8, // 预测库对象初始化失败
          IMAGE_IS_EMPTY = -9, // 图像数据为空
          ABILITY_INIT_FAILED = -10, // 人脸能力初始化失败
          ABILITY_UNLOAD = -11, // 能力未加载
          ABILITY_ALREADY_LOADED = -12, // 人脸能力已加载
          NOT_AUTHORIZED = -13, // 未授权
          ABILITY_RUN_EXCEPTION = -14, // 人脸能力运行异常
          UNSUPPORT_IMAGE_TYPE = -15, // 不支持的图像类型
          IMAGE_TRANSFORM_FAILED = -16, // 图像转换失败
          };

          2.2 SDK 实例对象

          typedef void* BDFaceInstance; // 人脸SDK实例对象指针

          2.2.1 创建人脸SDK实例对象

          # bdface_create_instance
          enum BDFaceStatusCode bdface_create_instance(BDFaceInstance* face_instanc
          e);

          参数说明:

          参数名 类型 说明
          face_instance BDFaceInstance* 指向人脸SDK实例对象的二级指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode

          2.2.2 销毁人脸SDK实例对象

          # bdface_destroy_instance
          enum BDFaceStatusCode bdface_destroy_instance(BDFaceInstance face_instanc
          e);

          参数说明:

          参数名 类型 说明
          face_instance BDFaceInstance 指向人脸SDK实例对象的指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.3 图像实例对象

          /* 图片类型枚举 */
          enum BDFaceImageType {
          BDFACE_IMAGE_TYPE_RGB = 0 , // RGB图像
          BDFACE_IMAGE_TYPE_BGR = 1 , // BGR图像
          BDFACE_IMAGE_TYPE_RGBA = 2 , // RGBA图像
          BDFACE_IMAGE_TYPE_BGRA = 3 , // BGRA图像
          BDFACE_IMAGE_TYPE_GRAY = 4 , // 灰度图
          BDFACE_IMAGE_TYPE_DEPTH = 5 , // 深度图
          BDFACE_IMAGE_TYPE_YUV_NV21 = 6 , // YYYYVUVU
          BDFACE_IMAGE_TYPE_YUV_NV12 = 7 , // YYYYUVUV
          BDFACE_IMAGE_TYPE_YUV_YV12 = 8 , // YYYYVVUU
          };
          /* 图片实例对象结构体 */
          struct BDFaceImageInstance {
          int rows; // 行数
          int cols; // 列数
          enum BDFaceImageType type; // 图像类型
          unsigned char* data; // 图像数据指针
          }

          2.3.1 创建图像实例

          # bdface_create_img_instance
          enum BDFaceStatusCode bdface_create_img_instance(
          int rows,
          int cols,
          enum BDFaceImageType type,
          unsigned char* data,
          struct BDFaceImageInstance** img_instance);

          参数说明:

          参数名 类型 说明
          rows int 行数
          cols int 列数
          type enum BDFaceImageType 图像类型
          data unsigned char* 指向图像数据的指针
          img_instance struct BDFaceImageInstance** 指向图像实例的二级指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.3.2 销毁图像实例

          # bdface_destroy_img_instance
          enum BDFaceStatusCode bdface_destroy_img_instance(struct BDFaceImageInsta
          nce* img_instance);

          参数说明:

          参数名 类型 说明
          img_instance struct BDFaceImageInstance** 指向图像实例的指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.3.3 图像实例转换

          将图像实例对象转换为指定类型的另一种图像实例

          # bdface_convert_img_instance
          enum BDFaceStatusCode bdface_convert_img_instance(
          struct BDFaceImageInstance* src_instance,
          float angle,
          int is_mirror,
          enum BDFaceImageType dst_type,
          struct BDFaceImageInstance** dst_instance);

          参数说明:

          参数名 类型 说明
          src_instance struct BDFaceImageInstance* 原图像实例指针
          angle float 图像顺时针旋转角度
          is_mirror 是否将图片做镜像处理
          dst_type enum BDFaceImageType 要转换的目标类型
          dst_instance struct BDFaceImageInstance** 指向转换结果图像实例的二级指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          备注:目前支持的图像转换类型如下:

          源类型 -> 目标类型
          BDFACE_IMAGE_TYPE_BGRA -> BDFACE_IMAGE_TYPE_BGR
          BDFACE_IMAGE_TYPE_RGBA -> BDFACE_IMAGE_TYPE_BGR
          BDFACE_IMAGE_TYPE_YUV420 -> BDFACE_IMAGE_TYPE_BGR
          BDFACE_IMAGE_TYPE_YUV420 -> BDFACE_IMAGE_TYPE_BGRA

          2.3.4 图像实例转换

          一次性完成目标图像类型的转换,目前仅支持YUV_NV21到BGR的转换

          # bdface_create_img_instance_with_convert 
          enum BDFaceStatusCode bdface_create_img_instance_with_convert(
          int rows,
          int cols,
          enum BDFaceImageType src_type,
          unsigned char* data,
          int angle,
          int is_mirror,
          enum BDFaceImageType dst_type,
          struct BDFaceImageInstance** img_instance);

          参数说明:

          参数名 类型 说明
          rows int 行数
          cols int 列数
          src_type enum BDFaceImageType 源图像类型
          data unsigned char* 源图像数据指针
          angle float 图像顺时针旋转角度
          is_mirror 是否将图片做镜像处理
          dst_type enum BDFaceImageType 目标图像类型
          dst_instance struct BDFaceImageInstance** 指向目标图像实例的二级指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.4 预测库接口

          /* 预测库类型枚举 */
          enum BDFaceInferenceType {
          BDFACE_INFERENCE_CAFFE = 0 , // caffe预测库(废弃)
          BDFACE_INFERENCE_ANAKIN = 1 , // anakin预测库(废弃)
          BDFACE_INFERENCE_PADDLE = 2 , // paddle预测库
          BDFACE_INFERENCE_PADDLE_LITE = 3 , // paddle-lite预测库
          };
          /* 使用Anakin预测库的运行模式枚举(在未来版本废弃) */
          enum BDFaceAnakinRunMode {
          BDFACE_ANAKIN_RUN_AT_BIG_CORE = 0 , // 运行在大核
          BDFACE_ANAKIN_RUN_AT_SMALL_CORE = 1 , // 运行在小核
          BDFACE_ANAKIN_RUN_AUTO = 2 , // 自动选择
          };
          /* 使用anakin预测库的配置结构体(在未来版本废弃) */
          struct BDFaceInferenceAnakinConf {
          enum BDFaceAnakinRunMode mode; // 运行模式
          int core_num; // 运行的核数
          };
          /* 使用paddle预测库的配置结构体 */
          struct BDFaceInferencePaddleConf {
          int cpu_thread_num; // 设置CPU线程数
          bool enable_mkldnn; // 开启mkldnn加速
          };
          /**
          * @brief 使用paddle lite预测库的运行模式枚举, 推荐使用LITE_POWER_NO_BIND模式
          */
          enum BDFacePaddleLitePowerMode{
          LITE_POWER_HIGH = 0 ,
          LITE_POWER_LOW = 1 ,
          LITE_POWER_FULL = 2 ,
          LITE_POWER_NO_BIND = 3 ,
          LITE_POWER_RAND_HIGH = 4 ,
          LITE_POWER_RAND_LOW = 5
          };
          /* 使用paddle-lite预测库的配置结构体 */
          struct BDFaceInferencePaddleLiteConf{
          enum BDFacePaddleLitePowerMode power_mode; // 运行模式
          int core_num; // 运行的核数
          };
          /* 预测库的配置结构体 */
          struct BDFaceInferenceConf {
          enum BDFaceInferenceType infer_type; // 使用的预测库
          类型
          struct BDFaceInferenceAnakinConf anakin_conf; // anakin预测
          库配置(在未来版本废弃)
          struct BDFaceInferencePaddleConf paddle_conf; // paddle预测
          库配置
          struct BDFaceInferencePaddleLiteConf paddlelite_conf; // paddle-lit
          e预测库配置
          };

          2.4.1 获取预测库默认配置

          # bdface_inference_get_default_conf
          enum BDFaceStatusCode bdface_inference_get_default_conf(struct BDFaceInfe
          renceConf* conf);

          参数说明:

          参数名 类型 说明
          conf struct BDFaceInferenceConf* 指向预测库配置对象的指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.5 日志系统

          /* 日志类型枚举 */
          enum BDFaceLogType {
          BDFACE_LOG_TYPE_ERROR = 0 , // 打印错误日志
          BDFACE_LOG_TYPE_VALUE = 1 , // 打印值日志
          BDFACE_LOG_TYPE_PERF = 2 , // 打印性能日志
          BDFACE_LOG_TYPE_ALL = 3 , // 打印所有日志
          };

          2.5.1 控制日志输出接口

          # bdface_manage_log 
          enum BDFaceStatusCode bdface_manage_log(const enum BDFaceLogType type, co
          nst int status);

          参数说明:

          参数名 类型 说明
          type const enum BDFaceLogType 日志类型
          status const int 日志开启状态 0 :关闭; 1 :开启

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.5.2 获取指定日志类型的开启状态

          # bdface_get_log_status 
          int bdface_get_log_status(const enum BDFaceLogType type);

          参数说明:

          参数名 类型 说明
          type const enum BDFaceLogType 日志类型

          返回值说明:

          返回类型 说明
          int 日志开启状态 0 :关闭; 1 :开启

          2.6 人脸检测接口

          /* 人脸检测类型枚举 */
          enum BDFaceDetectType {
          BDFACE_DETECT_TYPE_RGB = 0 , // 可见光照片人脸检测
          BDFACE_DETECT_TYPE_NIR = 1 , // 近红外照片人脸检测
          };
          /* 人脸包围盒结构体 */
          struct BDFaceBBox {
          int index; // 人脸索引值
          float center_x; // 人脸中心点x坐标
          float center_y; // 人脸中心点y坐标
          float width; // 人脸宽度
          float height; // 人脸高度
          float angle; // 人脸角度
          float score; // 人脸置信度
          };
          /* 人脸包围盒列表 */
          struct BDFaceBBoxList {
          int num; // 人脸框个数
          BDFaceBBox* boxes; // 人脸框数据指针
          };
          /* 人脸检测参数配置 */
          struct BDFaceDetectConf {
          int max_detect_num; // 需要检测的最大脸数目
          float min_face_size; // 需要检测的最小脸大小
          float not_face_threshold; // 过滤非人脸的阈值(检测分值大于该
          阈值认为是人脸)
          float scale_ratio; // 人脸检测图像缩放系数
          struct BDFaceInferenceConf infer_conf; // 预测库配置
          }

          2.6.1 获取检测默认配置参数

          # bdface_detect_get_default_conf
          eunm BDFaceStatusCode bdface_detect_get_default_conf(
          enum BDFaceDetectType type,
          struct BDFaceDetectConf* conf);

          参数说明:

          参数名 类型 说明
          type enum BDFaceDetectType 人脸检测类型
          conf struct BDFaceDetectConf* 指向配置对象的指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.6.2 加载人脸检测能力

          # bdface_load_detect
          enum BDFaceStatusCode bdface_load_detect(
          BDFaceInstance face_instance,
          enum BDFaceDetectType type,
          const long model_length,
          const char* model_memory,
          struct BDFaceDetectConf* conf);

          参数说明:

          参数名 类型 说明
          face_instance BDFaceInstance 人脸SDK实例对象指针
          type enum BDFaceDetectType 人脸检测类型
          model_length const long 模型长度
          model_memory const char* 模型数据地址
          conf struct BDFaceDetectConf* 指向配置对象的指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.6.3 卸载人脸检测能力

          # bdface_unload_detect
          enum BDFaceStatusCode bdface_unload_detect(
          BDFaceInstance face_instance,
          enum BDFaceDetectType type);

          参数说明:

          参数名 类型 说明
          face_instance BDFaceInstance 人脸SDK实例对象指针
          type enum BDFaceDetectType 人脸检测类型

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.6.4 人脸检测接口

          # bdface_detect
          enum BDFaceStatusCode bdface_detect(
          const BDFaceInstance face_instance,
          const BDFaceImageInstance* img_instance,
          enum BDFaceDetectType type,
          struct BDFaceBBoxList** box_list);

          参数说明:

          参数名 类型 说明
          face_instance const BDFaceInstance 人脸SDK实例对象指针
          img_instance const struct BDFaceImageInstance* 指向图像实例的指针
          type enum BDFaceDetectType 人脸检测类型
          box_list struct BDFaceBBoxList** 指向人脸框数据的二级指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.7 人脸关键点提取接口

          /**
          * @brief 人脸关键点枚举类型
          */
          enum BDFaceAlignType {
          BDFACE_ALIGN_TYPE_RGB_ACCURATE = 0 , // rgb高精度关键点
          BDFACE_ALIGN_TYPE_RGB_FAST = 1 , // rgb快速关键点
          BDFACE_ALIGN_TYPE_NIR_ACCURATE = 2 , // nir高精度关键点
          BDFACE_ALIGN_TYPE_150_RGB_ACCURATE = 3 , // rgb 150高精度关键点
          };
          /* 人脸关键点数据结构体 */
          struct BDFaceLandmark {
          int index; // landmark索引
          int size; // landmark大小
          float* data; // landermark数据指针
          float score; // 人脸置信度
          };
          /* 人脸关键点列表 */
          struct BDFaceLandmarkList {
          int num; // 人脸关键点数量
          BDFaceLandmark* landmarks; // 人脸关键点数据指针
          }
          /* 人脸关键点提取参数配置 */
          struct BDFaceAlignConf {
          float threshold; // 过滤非人脸的阈值(分值大于该阈值
          认为是人脸)
          struct BDFaceInferenceConf infer_conf; // 预测库配置
          }

          2.7.1 获取align默认配置参数

          # bdface_align_get_default_conf
          enum BDFaceStatusCode bdface_align_get_default_conf(
          enum BDFaceAlignType type,
          struct BDFaceAlignConf* conf);

          参数说明:

          参数名 类型 说明
          type enum BDFaceAlignType 使用的关键点类型
          conf struct BDFaceAlignConf* 指向配置对象的指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.7.2 加载人脸关键点检测能力

          # bdface_load_align
          enum BDFaceStatusCode bdface_load_align(
          BDFaceInstance face_instance,
          enum BDFaceAlignType type,
          const long model_length,
          const char* model_memory,
          struct BDFaceAlignConf* conf);

          参数说明:

          参数名 类型 说明
          face_instance BDFaceInstance 人脸SDK实例对象指针
          type enum BDFaceAlignType 使用的关键点类型
          model_length const long 模型长度
          model_memory const char* 模型数据地址
          conf struct BDFaceAlignConf* 指向配置对象的指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.7.3 卸载人脸关键点检测能力

          # bdface_unload_align
          enum BDFaceStatusCode bdface_unload_align(
          BDFaceInstance face_instance,
          enum BDFaceAlignType type);

          参数说明:

          参数名 类型 说明
          face_instance BDFaceInstance 人脸SDK实例对象指针
          type enum BDFaceAlignType 使用的关键点类型

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.7.4 提取人脸关键点

          # bdface_align
          enum BDFaceStatusCode bdface_align(
          const BDFaceInstance face_instance,
          enum BDFaceAlignType type,
          const struct BDFaceImageInstance* img_instance,
          const struct BDFaceBBoxList* box_list,
          struct BDFaceLandmarkList** landmarks_list);

          参数说明:

          参数名 类型 说明
          face_instance const BDFaceInstance 人脸SDK实例对象指针
          type enum BDFaceAlignType 使用的关键点类型
          img_instance const struct BDFaceImageInstance* 指向图像实例的指针
          box_list const struct BDFaceBBoxList* 指向人脸框数据(人脸检测结果数据)的指针针
          landmarks_list struct BDFaceLandmarkList** 指向人脸关键点数据的二级指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.8 人脸静默活体检测接口

          /* 静默活体类型枚举 */
          enum BDFaceSilentLiveType {
          BDFACE_SILENT_LIVE_TYPE_RGB = 0 ,
          BDFACE_SILENT_LIVE_TYPE_NIR = 1 ,
          BDFACE_SILENT_LIVE_TYPE_DEPTH = 2 ,
          };
          /**
          * @brief 静默活体分值列表
          */
          struct BDFaceSilentLiveList {
          int num; // 活体分值个数
          float* scores; // 活体数据地址
          };
          /* 静默活体配置结构体 */
          struct BDFaceSilentLiveConf {
          struct BDFaceInferenceConf infer_conf; // 预测库配置
          }

          2.8.1 获取活体检测默认配置参数

          # bdface_silent_live_get_default_conf
          enum BDFaceStatusCode bdface_silent_live_get_default_conf(
          enum BDFaceSilentLiveType type,
          struct BDFaceSilentLiveConf* conf);

          参数说明:

          参数名 类型 说明
          type enum BDFaceSilentLiveType 静默活体类型
          conf struct BDFaceSilentLiveConf* 指向配置对象的指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.8.2 加载静默活体检测能力

          # bdface_load_silent_live
          enum BDFaceStatusCode bdface_load_silent_live(
          BDFaceInstance face_instance,
          enum BDFaceSilentLiveType type,
          const long model_length,
          const char *model_memory,
          struct BDFaceSilentLiveConf *conf);

          参数说明:

          参数名 类型 说明
          face_instance BDFaceInstance 人脸SDK实例对象指针
          type enum BDFaceSilentLiveType 静默活体类型
          model_length const long 模型长度
          model_memory const char* 模型数据地址
          conf struct BDFaceAttributeConf* 指向配置对象的指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.8.3 卸载静默活体检测能力

          # bdface_unload_silent_live
          enum BDFaceStatusCode bdface_unload_silent_live(
          BDFaceInstance face_instance,
          enum BDFaceSilentLiveType type);

          参数说明:

          参数名 类型 说明
          face_instance BDFaceInstance 人脸SDK实例对象指针
          type enum BDFaceSilentLiveType 静默活体类型

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.8.4 静默活体检测接口

          # bdface_silent_live
          enum BDFaceStatusCode bdface_silent_live(
          const BDFaceInstance face_instance,
          const struct BDFaceImageInstance *img_instance,
          const enum BDFaceSilentLiveType type,
          const struct BDFaceLandmarkList *landmark_list,
          struct BDFaceSilentLiveList** silent_live_list);

          参数说明:

          参数名 类型 说明
          face_instance const BDFaceInstance 人脸SDK实例对象指针
          img_instance const struct BDFaceImageInstance* 指向图像实例的指针
          type const enum BDFaceSilentLiveType 静默活体类型
          landmark_list const struct BDFaceLandmarkList* 指向人脸关键点数据的指针
          silent_live_list struct BDFaceSilentLiveList** 指向静默活体检测数据的二级指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.9 人脸特征值提取

          /* 人脸特征提取结构体 */
          struct BDFaceFeature {
          int size; // feature维度
          float* data; // feature的数据指针
          };
          /**
          * @brief 人脸feature数据列表
          */
          struct BDFaceFeatureList {
          int num; // feature个数
          BDFaceFeature* features; // feature数据指针
          };
          /* 识别类型枚举 */
          enum BDFaceFeatureType {
          BDFACE_FEATURE_TYPE_LIVE_PHOTO = 0 , // 生活照特征提取
          BDFACE_FEATURE_TYPE_ID_PHOTO = 1 , // 证件照特征提取
          BDFACE_FEATURE_TYPE_NIR = 2 , // 证件照特征提取
          BDFACE_FEATURE_TYPE_RGBD = 3 , // 证件照特征提取
          };
          /* 人脸配置结构体 */
          struct BDFaceFeatureConf {
          struct BDFaceInferenceConf infer_conf;
          };

          2.9.1 获取特征值默认配置参数

          # bdface_feature_get_default_conf
          enum BDFaceStatusCode bdface_feature_get_default_conf(
          enum BDFaceFeatureType type,
          struct BDFaceFeatureConf* conf);

          参数说明:

          参数名 类型 说明
          type enum BDFaceFeatureType 人脸识别类型
          conf struct BDFaceFeatureConf* 指向配置对象的指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.9.2 加载特征提取能力

          # bdface_load_feature
          enum BDFaceStatusCode bdface_load_feature(
          BDFaceInstance face_instance,
          enum BDFaceFeatureType type,
          const long model_length,
          const char* model_memory,
          struct BDFaceFeatureConf* conf);

          参数说明:

          参数名 类型 说明
          face_instance BDFaceInstance 人脸SDK实例对象指针
          type enum BDFaceFeatureType 人脸识别类型
          model_length const long 模型长度
          model_memory const char* 模型数据地址
          conf struct BDFaceAttributeConf* 指向配置对象的指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.9.3 卸载人脸识别能力

          # bdface_unload_feature
          enum BDFaceStatusCode bdface_unload_feature(
          BDFaceInstance face_instance,
          enum BDFaceFeatureType type);

          参数说明:

          参数名 类型 说明
          face_instance BDFaceInstance 人脸SDK实例对象指针
          type enum BDFaceFeatureType 人脸识别类型

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.9.4 人脸特征值提取接口

          # bdface_feature
          enum BDFaceStatusCode bdface_feature(
          const BDFaceInstance face_instance,
          const BDFaceImageInstance* image,
          const enum BDFaceFeatureType type,
          const struct BDFaceLandmarkList* landmark_list,
          struct BDFaceFeatureList** feature_list);

          参数说明:

          参数名 类型 说明
          face_instance const BDFaceInstance 人脸SDK实例对象指针
          image const struct BDFaceImageInstance* 指向图像实例的指针
          type const enum BDFaceFeatureType 人脸识别类型
          landmark_list const struct BDFaceLandmarkList* 指向人脸关键点数据的指针
          feature_list struct BDFaceFeatureList** 指向人脸特征值数据的二级指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.9.5 人脸RGBD特征提取接口

          # bdface_rgbd_feature
          enum BDFaceStatusCode bdface_rgbd_feature(
          const BDFaceInstance face_instance,
          const struct BDFaceImageInstance* image,
          const struct BDFaceImageInstance* image_depth,
          const enum BDFaceFeatureType type,
          const struct BDFaceLandmarkList* landmark_list,
          struct BDFaceFeatureList** feature_list);

          参数说明:

          参数名 类型 说明
          face_instance const BDFaceInstance 人脸SDK实例对象指针
          image const struct BDFaceImageInstance* RGB图像句柄
          image_depth const struct BDFaceImageInstance* Depth图像句柄
          type const enum BDFaceFeatureType 人脸识别类型,固定BDFACE_FEATURE_TYPE_RGBD有效
          landmark_list const struct BDFaceLandmarkList* 指向人脸关键点数据的指针
          feature_list struct BDFaceFeatureList** 指向人脸特征值数据的二级指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.9.6 人脸特征值比对接口

          # bdface_feature_compare
          enum BDFaceStatusCode bdface_feature_compare(
          const BDFaceInstance face_instance,
          const struct BDFaceFeature* feature_first,
          const struct BDFaceFeature* feature_second,
          const enum BDFaceFeatureType type,
          int is_percent,
          float* score);

          参数说明:

          参数名 类型 说明
          face_instance const BDFaceInstance 人脸SDK实例对象指针
          feature_first const struct BDFaceFeature* 人脸特征值数据地址
          feature_second const struct BDFaceFeature* 人脸特征值数据地址
          type const enum BDFaceFeatureType 人脸识别类型
          is_percent int 是否转换为百分制
          score float* 比对分值

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.10 人脸属性接口

          /* 人脸表情属性枚举 */
          enum BDFaceAttributeEmotionType {
          BDFACE_ATTRIBUTE_EMOTION_FROWN = 0 , // 皱眉
          BDFACE_ATTRIBUTE_EMOTION_SMILE = 1 , // 笑
          BDFACE_ATTRIBUTE_EMOTION_CALM = 2 , // 平静
          };
          /* 人脸种族属性枚举 */
          enum BDFaceRace {
          BDFACE_RACE_YELLOW = 0 , // 黄种人
          BDFACE_RACE_WHITE = 1 , // 白种人
          BDFACE_RACE_BLACK = 2 , // 黑种人
          BDFACE_RACE_INDIAN = 3 , // 印第安人
          };
          /* 眼睛状态属性枚举 */
          enum BDFaceGlasses {
          BDFACE_NO_GLASSES = 0 , // 无眼镜
          BDFACE_GLASSES = 1 , // 有眼镜
          BDFACE_SUN_GLASSES = 2 , // 墨镜
          };
          /* 性别属性枚举 */
          enum BDFaceGender {
          BDFACE_GENDER_FEMAILE = 0 , // 女性
          BDFACE_GENDER_MALE = 1 , // 男性
          };
          /* 人脸属性结构体 */
          struct BDFaceAttribute {
          int age; // 年龄
          BDFaceRace race; // 种族
          BDFaceAttributeEmotionType emotion; // 表情
          BDFaceGlasses glasses; // 眼镜
          BDFaceGender gender; // 性别
          };
          /**
          * @brief 人脸属性数据列表
          */
          struct BDFaceAttributeList {
          int num; // 人脸属性数量
          struct BDFaceAttribute* attributes; // 人脸属性数据指针
          };
          /* 人脸属性参数配置结构体 */
          struct BDFaceAttributeConf {
          struct BDFaceInferenceConf infer_conf; // 预测库配置
          };

          2.10.1 获取属性默认配置参数

          # bdface_attribute_get_default_conf
          enum BDFaceStatusCode bdface_attribute_get_default_conf(struct BDFaceAttr
          ibuteConf* conf);

          参数说明:

          参数名 类型 说明
          conf struct BDFaceAttributeConf* 指向配置对象的指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.10.2 加载人脸属性检测能力

          # bdface_load_attribute
          enum BDFaceStatusCode bdface_load_attribute(
          BDFaceInstance face_instance,
          const long model_length,
          const char* model_memory,
          struct BDFaceAttributeConf* conf);

          参数说明:

          参数名 类型 说明
          face_instance BDFaceInstance 人脸SDK实例对象指针
          model_length const long 模型长度
          model_memory const char* 模型数据地址
          conf struct BDFaceAttributeConf* 指向配置对象的指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.10.3 卸载人脸属性检测能力

          # bdface_unload_attribute
          enum BDFaceStatusCode bdface_unload_attribute(BDFaceInstance face_instanc
          e);

          参数说明:

          参数名 类型 说明
          face_instance BDFaceInstance 人脸SDK实例对象指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.10.4 人脸属性检测

          # bdface_attribute
          enum BDFaceStatusCode bdface_attribute(
          const BDFaceInstance face_instance,
          const BDFaceImageInstance* img_instance,
          const struct BDFaceLandmarkList* landmark_list,
          struct BDFaceAttributeList** attr_list);

          参数说明:

          参数名 类型 说明
          face_instance const BDFaceInstance 人脸SDK实例对象指针
          img_instance const struct BDFaceImageInstance* 指向图像实例的指针
          landmark_list const struct BDFaceLandmarkList* 指向人脸关键点数据的指针
          attr_list struct BDFaceAttributeList** 指向人脸属性数据的二级指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.11 人脸模糊度检测接口

          struct BDFaceBlurConf {
          struct BDFaceInferenceConf infer_conf; // 预测库相关配置
          };
          /**
          * @brief 人脸模糊度数据列表
          */
          struct BDFaceBlurList {
          int num; // 模糊度分值个数
          float* scores; // 模糊度分值数据指针
          };

          2.11.1 获取人脸模糊度检测默认配置参数

          # bdface_blur_get_default_conf
          enum BDFaceStatusCode bdface_blur_get_default_conf(struct BDFaceBlurConf*
          conf);

          参数说明:

          参数名 类型 说明
          conf struct BDFaceBlurConf* 指向配置对象的指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.11.2 加载人脸模糊度检测能力

          # bdface_load_blur
          enum BDFaceStatusCode bdface_load_blur(
          BDFaceInstance face_instance,
          const long model_length,
          const char* model_memory,
          struct BDFaceBlurConf* conf);

          参数说明:

          参数名 类型 说明
          face_instance BDFaceInstance 人脸SDK实例对象指针
          model_length const long 模型长度
          model_memory const char* 模型数据地址
          conf struct BDFaceBlurConf* 指向配置对象的指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.11.3 卸载人脸模糊度检测能力

          # bdface_unload_blur
          enum BDFaceStatusCode bdface_unload_blur(BDFaceInstance face_instance);

          参数说明:

          参数名 类型 说明
          face_instance BDFaceInstance 人脸SDK实例对象指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.11.4 人脸模糊度检测

          # bdface_blur
          enum BDFaceStatusCode bdface_blur(
          const BDFaceInstance face_instance,
          const struct BDFaceImageInstance* img_instance,
          const struct BDFaceLandmarkList* landmark_list,
          struct BDFaceBlurList** blur_list);

          参数说明:

          参数名 类型 说明
          face_instance const BDFaceInstance sdk实例对象指针
          img_instance const struct BDFaceImageInstance* 指向图像实例的指针
          landmark_list const struct BDFaceLandmarkList* 指向人脸关键点数据的指针
          blur_list struct BDFaceBlurList** 指向人脸模糊度检测数据的二级指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.12 人脸检测接口

          2.12.1 加载图像抠图能力

          # bdface_load_crop_image
          enum BDFaceStatusCode bdface_load_crop_image(BDFaceInstance face_instanc
          e);

          参数说明:

          参数名 类型 说明
          face_instance BDFaceInstance 人脸SDK实例对象指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.12.2 卸载扣图能力

          # bdface_unload_crop_image
          enum BDFaceStatusCode bdface_unload_crop_image(BDFaceInstance face_instan
          ce);

          参数说明:

          参数名 类型 说明
          face_instance BDFaceInstance 人脸SDK实例对象指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.12.3 根据给定的人脸关键点进行扣图

          # bdface_crop_image_with_landmark
          enum BDFaceStatusCode bdface_crop_image_with_landmark(
          const BDFaceInstance face_instance,
          const struct BDFaceImageInstance* src_img,
          struct BDFaceLandmark* landmark,
          struct BDFaceImageInstance** dst_img,
          int* is_outof_boundary,
          float enlage_ratio = 1 ,
          bool correction = false);

          参数说明:

          参数名 类型 说明
          face_instance const BDFaceInstance 人脸SDK实例对象指针
          src_img const struct BDFaceImageInstance* 输入图像句柄
          landmark struct BDFaceLandmark* 人脸关键点
          dst_img struct BDFaceImageInstance** 图像扣图结果
          is_outof_boundary int* 输出值:扣图是否超出图像范围(是否有黑边)
          enlage_ratio float 扣图框放大倍数:默认值 1
          correction bool 是否进行人脸矫正

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.12.4 根据给定的人脸框进行扣图

          # bdface_crop_image_with_box
          enum BDFaceStatusCode bdface_crop_image_with_box(
          const BDFaceInstance face_instance,
          const struct BDFaceImageInstance* src_img,
          struct BDFaceBBox* face_box,
          struct BDFaceImageInstance** dst_img,
          int *is_outof_boundary,
          float enlage_ratio = 1 );

          参数说明:

          参数名 类型 说明
          face_instance const BDFaceInstance 人脸SDK实例对象指针
          src_img const struct BDFaceImageInstance* 输入图像句柄
          face_box struct BDFaceBBox* 人脸关键点
          dst_img struct BDFaceImageInstance** 图像扣图结果
          is_outof_boundary int* 输出值:扣图是否超出图像范围(是否有黑边)
          enlage_ratio float 扣图框放大倍数:默认值 1

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.13 注意力检测接口

          /* 双眼注意力信息 */
          enum BDFaceGazeDirection {
          BDFACE_GAZE_DIRECTION_UP = 0 , // 向上看
          BDFACE_GAZE_DIRECTION_DOWN = 1 , // 向下看
          BDFACE_GAZE_DIRECTION_RIGHT = 2 , // 向右看
          BDFACE_GAZE_DIRECTION_LEFT = 3 , // 向左看
          BDFACE_GAZE_DIRECTION_FRONT = 4 , // 向前看
          BDFACE_GAZE_DIRECTION_EYE_CLOSE = 5 , // 闭眼
          };
          /* 注意力参数配置 */
          struct BDFaceGazeConf {
          BDFaceInferenceConf infer_conf; // 预测库配置
          };
          /* 注意力信息 */
          struct BDFaceGaze {
          BDFaceGazeDirection direction; // 凝视方向
          float confidence; // 置信度
          };
          /* 双眼注意力信息 */
          struct BDFaceGazeInfo {
          BDFaceGaze left_eye; // 左眼注意力信息
          BDFaceGaze right_eye; // 右眼注意力信息
          };
          /**
          * @brief 双眼注意力信息列表
          */
          struct BDFaceGazeInfoList {
          int num; // 注意力信息个数
          struct BDFaceGazeInfo* gazes; // 注意力数据指针
          };

          2.13.1 获取注意力默认配置参数

          # bdface_gaze_get_default_conf
          enum BDFaceStatusCode bdface_gaze_get_default_conf(struct BDFaceGazeConf*
          conf);

          参数说明:

          参数名 类型 说明
          conf struct BDFaceGazeConf* 指向配置对象的指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.13.2 加载注意力检测能力

          # bdface_load_gaze
          enum BDFaceStatusCode bdface_load_gaze(
          BDFaceInstance face_instance,
          const long model_length,
          const char* model_memory,
          struct BDFaceGazeConf* conf);

          参数说明:

          参数名 类型 说明
          face_instance BDFaceInstance 人脸SDK实例对象指针
          model_length const long 模型长度
          model_memory const char* 模型数据地址
          conf struct BDFaceGazeConf* 指向配置对象的指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.13.3 卸载注意力检测能力

          #bdface_unload_gaze
          enum BDFaceStatusCode bdface_unload_gaze(BDFaceInstance face_instance);

          参数说明:

          参数名 类型 说明
          face_instance BDFaceInstance 人脸SDK实例对象指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.13.4 注意力检测接口

          # bdface_gaze
          BDFaceStatusCode bdface_gaze(
          const BDFaceInstance face_instance,
          const struct BDFaceImageInstance* image,
          const struct BDFaceLandmarkList* landmark_list,
          struct BDFaceGazeInfoList** gaze_list);

          参数说明:

          参数名 类型 说明
          face_instance const BDFaceInstance 人脸SDK实例对象指针
          image const struct BDFaceImageInstance* 指向图像实例的指针
          landmark_list const struct BDFaceLandmarkList* 指向人脸关键点数据的指针
          gaze_list struct BDFaceGazeInfoList** 指向人脸注意力数据的二级指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.14 人脸姿态角检测

          /* 姿态角 */
          struct BDFaceHeadPose {
          float yaw; // 左右偏转角
          float roll; // 与人脸平行平面内的头部旋转角
          float pitch; // 上下偏转角
          };
          /**
          * @brief 姿态角数据列表
          */
          struct BDFaceHeadPoseList {
          int num; // 姿态角个数
          BDFaceHeadPose* poses; // 姿态角数据指针
          };

          2.14.1 加载人脸姿态角检测能力

          # bdface_load_head_pose
          enum BDFaceStatusCode bdface_load_head_pose(BDFaceInstance
          face_instance);

          参数说明:

          参数名 类型 说明
          face_instance BDFaceInstance 人脸SDK实例对象指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.14.2 卸载人脸姿态角检测能力

          # bdface_unload_head_pose
          enum BDFaceStatusCode bdface_unload_head_pose(BDFaceInstance face_instanc
          e);

          参数说明:

          参数名 类型 说明
          face_instance BDFaceInstance 人脸SDK实例对象指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.14.3 人脸姿态角检测

          # bdface_head_pose
          enum BDFaceStatusCode bdface_head_pose(
          const BDFaceInstance face_instance,
          const struct BDFaceLandmarkList *landmark_list,
          struct BDFaceHeadPoseList** head_pose_list);

          参数说明:

          参数名 类型 说明
          face_instance const BDFaceInstance 人脸SDK实例对象指针
          landmark_list const struct BDFaceLandmarkList* 指向人脸关键点数据的指针
          head_pose_list struct BDFaceHeadPoseList** 指向人脸姿态角数据的二级指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.15 人脸光照检测接口

          /**
          * @brief 人脸光照数据列表
          */
          struct BDFaceIlluminationList {
          int num; // 人脸光照强度个数
          int* scores; // 光照强度数据指针
          };

          2.15.1 加载人脸光照强度检测能力

          # bdface_load_illumination
          enum BDFaceStatusCode bdface_load_illumination(BDFaceInstance face_instan
          ce);

          参数说明:

          参数名 类型 说明
          face_instance BDFaceInstance 人脸SDK实例对象指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.15.2 卸载人脸光照强度检测能力

          # bdface_unload_illumination
          enum BDFaceStatusCode bdface_unload_illumination(BDFaceInstance face_inst
          ance);

          参数说明:

          参数名 类型 说明
          face_instance BDFaceInstance 人脸SDK实例对象指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.15.3 人脸光照强度检测接口

          # bdface_illumination
          enum BDFaceStatusCode bdface_illumination(
          const BDFaceInstance face_instance,
          const struct BDFaceImageInstance* img_instance,
          const struct BDFaceLandmarkList* landmark_list,
          struct BDFaceIlluminationList** illum_list);

          参数说明:

          参数名 类型 说明
          face_instance const BDFaceInstance 人脸SDK实例对象指针
          img_instance const struct BDFaceImageInstance* 指向图像实例的指针
          landmark_list const struct BDFaceLandmarkList* 指向人脸关键点数据的指针
          illum_list struct BDFaceIlluminationList** 指向人脸光照强度数据的二级指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.16 闭嘴检测接口

          /* 嘴巴闭合状态检测参数配置 */
          struct BDFaceMouthCloseConf {
          struct BDFaceInferenceConf infer_conf; // 预测库配置
          };
          /**
          * @brief 嘴巴闭合状态数据列表
          */
          struct BDFaceMouthCloseList {
          int num; // 数据个数
          float* scores; // 数据地址
          };

          2.16.1 获取属性默认配置参数

          # bdface_mouth_close_get_default_conf
          enum BDFaceStatusCode bdface_mouth_close_get_default_conf(struct BDFaceMo
          uthCloseConf* conf);

          参数说明:

          参数名 类型 说明
          conf struct BDFaceMouthCloseConf* 指向配置对象的指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.16.2 加载人脸嘴巴闭合检测能力

          # bdface_load_mouth_close
          enum BDFaceStatusCode bdface_load_mouth_close(
          BDFaceInstance face_instance,
          const long model_length,
          const char* model_memory,
          struct BDFaceMouthCloseConf* conf);

          参数说明:

          参数名 类型 说明
          face_instance BDFaceInstance 人脸SDK实例对象指针
          model_length const long 模型长度
          model_memory const char* 模型数据地址
          conf struct BDFaceMouthCloseConf* 指向配置对象的指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.16.3 卸载人脸嘴巴闭合检测能力

          # bdface_unload_mouth_close
          enum BDFaceStatusCode bdface_unload_mouth_close(BDFaceInstance face_insta
          nce);

          参数说明:

          参数名 类型 说明
          face_instance BDFaceInstance 人脸SDK实例对象指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.16.4 人脸闭嘴检测接口

          # bdface_mouth_close
          enum BDFaceStatusCode bdface_mouth_close(
          const BDFaceInstance face_instance,
          const struct BDFaceImageInstance* img_instance,
          const struct BDFaceLandmarkList* landmark_list,
          struct BDFaceMouthList** mouth_list);

          参数说明:

          参数名 类型 说明
          face_instance const BDFaceInstance 人脸SDK实例对象指针
          img_instance const struct BDFaceImageInstance* 指向图像实例的指针
          landmark_list const struct BDFaceLandmarkList* 指向人脸关键点数据的指针
          mouth_list struct BDFaceMouthList** 指向人脸嘴巴闭合数据的二级指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.17 眼睛闭合状态检测接口

          /* 人眼闭合状态结构体 */
          struct BDFaceEyesClose {
          float left_eye_close_conf; // 左眼闭合的置信度
          float right_eye_close_conf; // 右眼闭合的置信度
          };
          /**
          * @brief 人眼闭合状态数据列表
          */
          struct BDFaceEyeCloseList {
          int num; // 人眼闭合状态数据个数
          BDFaceEyeClose* eyes; // 人眼闭合状态数据指针
          };
          /* 人眼闭合状态检测参数配置结构体 */
          struct BDFaceEyesCloseConf {
          struct BDFaceInferenceConf infer_conf; // 预测库配置
          }

          2.17.1 获取闭眼默认配置参数

          # bdface_eyes_close_get_default_conf
          enum BDFaceStatusCode bdface_eyes_close_get_default_conf(struct BDFaceEye
          sCloseConf* conf);

          参数说明:

          参数名 类型 说明
          conf struct BDFaceEyesCloseConf* 指向配置对象的指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.17.2 加载眼睛闭合检测能力

          # bdface_load_eyes_close
          enum BDFaceStatusCode bdface_load_eyes_close(
          BDFaceInstance face_instance,
          const long model_length,
          const char* model_memory,
          struct BDFaceEyesCloseConf* conf);

          参数说明:

          参数名 类型 说明
          face_instance BDFaceInstance 人脸SDK实例对象指针
          model_length const long 模型长度
          model_memory const char* 模型数据地址
          conf struct BDFaceEyesCloseConf* 指向配置对象的指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.17.3 卸载眼睛闭合检测能力

          # bdface_unload_eyes_close
          enum BDFaceStatusCode bdface_unload_eyes_close(BDFaceInstance face_instan
          ce);

          参数说明:

          参数名 类型 说明
          face_instance BDFaceInstance 人脸SDK实例对象指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.17.4 眼睛闭合检测接口

          # bdface_eyes_close
          BDFaceStatusCode bdface_eyes_close(
          const BDFaceInstance face_instance,
          const struct BDFaceImageInstance* img_instance,
          const struct BDFaceLandmarkList* landmark_list,
          struct BDFaceEyeCloseList** eye_list);

          参数说明:

          参数名 类型 说明
          face_instance const BDFaceInstance 人脸SDK实例对象指针
          img_instance const struct BDFaceImageInstance* 指向图像实例的指针
          landmark_list const struct BDFaceLandmarkList* 指向人脸关键点数据的指针
          eye_list struct BDFaceEyeCloseList** 指向眼睛闭合数据的二级指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.18 人脸遮挡度检测接口

          /* 人脸遮挡信息结构体 */
          struct BDFaceOcclusion {
          float left_eye; // 左眼遮挡置信度
          float right_eye; // 右眼遮挡置信度
          float nose; // 鼻子遮挡置信度
          float mouth; // 嘴巴遮挡置信度
          float left_cheek; // 左脸遮挡置信度
          float right_cheek; // 右脸遮挡置信度
          float chin; // 下巴遮挡置信度
          };
          /**
          * @brief 人脸遮挡数据列表
          */
          struct BDFaceOcclusionList {
          int num; // 遮挡数据个数
          struct BDFaceOcclusion* occlus; // 遮挡数据指针
          };
          /* 人脸遮挡参数配置 */
          struct BDFaceOcclusionConf {
          struct BDFaceInferenceConf infer_conf; // 预测库配置
          };

          2.18.1 获取人脸遮挡默认配置参数

          # bdface_occlusion_get_default_conf
          enum BDFaceStatusCode bdface_occlusion_get_default_conf(struct BDFaceOccl
          usionConf* conf);

          参数说明:

          参数名 类型 说明
          conf struct BDFaceOcclusionConf* 指向配置对象的指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.18.2 加载人脸遮挡检测能力

          # bdface_load_occlusion
          enum BDFaceStatusCode bdface_load_occlusion(
          BDFaceInstance face_instance,
          const long model_length,
          const char* model_memory,
          struct BDFaceOcclusionConf *conf);

          参数说明:

          参数名 类型 说明
          face_instance BDFaceInstance 人脸SDK实例对象指针
          model_length const long 模型长度
          model_memory const char* 模型数据地址
          conf struct BDFaceOcclusionConf* 指向配置对象的指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.18.3 卸载人脸遮挡检测能力

          # bdface_unload_occlusion
          enum BDFaceStatusCode bdface_unload_occlusion(BDFaceInstance face_instanc
          e);

          参数说明:

          参数名 类型 说明
          face_instance BDFaceInstance 人脸SDK实例对象指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.18.4 人脸遮挡检测接口

          # bdface_occlusion
          enum BDFaceStatusCode bdface_occlusion(
          const BDFaceInstance face_instance,
          const struct BDFaceImageInstance* img_instance,
          const struct BDFaceLandmarkList* landmark_list,
          struct BDFaceOcclusionList** occlu_list);

          参数说明:

          参数名 类型 说明
          face_instance const BDFaceInstance 人脸SDK实例对象指针
          img_instance const struct BDFaceImageInstance* 指向图像实例的指针
          landmark_list const struct BDFaceLandmarkList* 指向人脸关键点数据的指针
          occlu_list struct BDFaceOcclusionList** 指向人脸遮挡数据的二级指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.19 人脸跟踪接口

          /* 人脸跟踪配置结构体 */
          struct BDFaceTrackConf {
          float detect_intv_before_track; // 未跟踪到人脸前的检测时间间隔
          float detect_intv_during_track; // 已跟踪到人脸后的检测时间间隔
          }
          /* 人脸跟踪信息结构体 */
          struct BDFaceTrackInfo {
          int face_id; // 已跟踪的人脸id标识
          BDFaceBBox box; // 已跟踪的人脸框信息
          BDFaceLandmark landmark; // 已跟踪的人脸的关键点信息
          };
          /* 人脸跟踪信息列表结构体 */
          struct BDFaceTrackInfoList {
          int num; // 已跟踪的人脸数量
          BDFaceTrackInfo* track_info; // 已跟踪的人脸信息列表
          };
          /**
          * @brief 人脸跟踪信息列表结构
          */
          struct BDFaceTrackInfoList {
          int num; // 已跟踪的人脸数量
          BDFaceTrackInfo* track_info; // 已跟踪的人脸信息列表
          };

          2.19.1 获取人脸跟踪默认配置参数

          # bdface_track_get_default_conf
          eunm BDFaceStatusCode bdface_track_get_default_conf(
          struct BDFaceTrackConf* conf,
          enum BDFaceDetectType detect_type,
          enum BDFaceAlignType align_type);

          参数说明:

          参数名 类型 说明
          conf struct BDFaceTrackConf* 指向配置对象的指针
          detect_type enum BDFaceDetectType 使用的人脸检测类型
          align_type enum BDFaceAlignType 使用的人脸关键点类型

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.19.2 加载人脸跟踪能力

          # bdface_load_track
          enum BDFaceStatusCode bdface_load_track(
          BDFaceInstance face_instance,
          enum BDFaceDetectType detect_type,
          enum BDFaceAlignType align_type,
          struct BDFaceTrackConf* conf);

          参数说明:

          参数名 类型 说明
          face_instance BDFaceInstance 人脸SDK实例对象指针
          detect_type enum BDFaceDetectType 使用的人脸检测类型
          align_type enum BDFaceAlignType 使用的人脸关键点类型
          conf struct BDFaceTrackConf* 指向配置对象的指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.19.3 卸载人脸跟踪能力

          # bdface_unload_track
          enum BDFaceStatusCode bdface_unload_track(
          BDFaceInstance face_instance,
          enum BDFaceDetectType detect_type,
          enum BDFaceAlignType align_type);

          参数说明:

          参数名 类型 说明
          face_instance BDFaceInstance 人脸SDK实例对象指针
          detect_type enum BDFaceDetectType 使用的人脸检测类型
          align_type enum BDFaceAlignType 使用的人脸关键点类型

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.19.4 人脸跟踪接口

          # bdface_track
          enum BDFaceStatusCode bdface_track(
          const BDFaceInstance face_instance,
          enum BDFaceDetectType detect_type,
          enum BDFaceAlignType align_type,
          const struct BDFaceImageInstance* image,
          struct BDFaceTrackInfoList** track_list);

          参数说明:

          参数名 类型 说明
          face_instance const BDFaceInstance 人脸SDK实例对象指针
          detect_type enum BDFaceDetectType 使用的人脸检测类型
          align_type enum BDFaceAlignType 使用的人脸关键点类型
          img_instance const struct BDFaceImageInstance* 指向图像实例的指针
          track_list const struct BDFaceTrackInfoList* 指向人脸跟踪数据的二级指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.19.5 清除历史人脸跟踪数据接口

          # bdface_track_clear_history
          enum BDFaceStatusCode bdface_track_clear_history(
          const BDFaceInstance face_instance,
          enum BDFaceDetectType detect_type,
          enum BDFaceAlignType align_type);

          参数说明:

          参数名 类型 说明
          face_instance const BDFaceInstance 人脸SDK实例对象指针
          detect_type enum BDFaceDetectType 使用的人脸检测类型
          align_type enum BDFaceAlignType 使用的人脸关键点类型

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.20 动作活体

          /**
          * @brief 动作活体类型枚举
          */
          enum BDFaceActionLiveType {
          BDFACE_ACTION_LIVE_BLINK = 0 , // 眨眨眼
          BDFACE_ACTION_LIVE_OPEN_MOUTH = 1 , // 张张嘴
          BDFACE_ACTION_LIVE_NOD = 2 , // 点点头
          BDFACE_ACTION_LIVE_SHAKE_HEAD = 3 , // 摇摇头
          BDFACE_ACTION_LIVE_LOOK_UP = 4 , // 抬头
          BDFACE_ACTION_LIVE_TURN_LEFT = 5 , // 向左转
          BDFACE_ACTION_LIVE_TURN_RIGHT = 6 , // 向右转
          };
          1./**
          2. * @brief 动作活体参数配置结构体
          3. */
          4.struct BDFaceActionLiveConf {
          5. float eye_close_threshold; // 闭眼的阈值
          6. float mouth_close_threshold; // 闭嘴的阈值
          7. float look_up_threshold; // 抬头的阈值
          8. float look_down_threshold; // 低头的阈值
          9. float turn_left_threshold; // 向左转头的阈值
          10. float turn_right_threshold; // 向右转头的阈值
          11.};

          2.20.1 获取动作活体默认配置

          # bdface_action_live_get_default_conf
          enum BDFaceStatusCode bdface_action_live_get_default_conf(
          struct BDFaceActionLiveConf* conf);

          参数说明:

          参数名 类型 说明
          conf struct BDFaceActionLiveConf* 参照BDFaceActionLiveConf

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.20.2 加载动作活体能力

          # bdface_load_action_live
          enum BDFaceStatusCode bdface_load_action_live(
          BDFaceInstance face_instance,
          struct BDFaceActionLiveConf* conf);

          参数说明:

          参数名 类型 说明
          face_instance BDFaceInstance 人脸SDK实例对象指针
          conf struct BDFaceActionLiveConf* 参照BDFaceActionLiveConf

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.20.3 卸载动作活体能力

          # bdface_unload_action_live
          enum BDFaceStatusCode bdface_unload_action_live(BDFaceInstance face_insta
          nce);

          参数说明:

          参数名 类型 说明
          face_instance BDFaceInstance 人脸SDK实例对象指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.20.4 动作活体检测接口

          # bdface_action_live
          enum BDFaceStatusCode bdface_action_live(
          const BDFaceInstance face_instance,
          const struct BDFaceImageInstance* img_instance,
          const struct BDFaceLandmark* landmark,
          enum BDFaceActionLiveType type,
          int* is_exist);

          参数说明:

          参数名 类型 说明
          face_instance const BDFaceInstance 人脸SDK实例对象指针
          src_img const struct BDFaceImageInstance* 输入图像句柄
          landmark struct BDFaceLandmark* 人脸关键点
          type enum BDFaceActionType 指定检测的动作活体类型
          is_exist int* 输出值:是否存在该动作

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明

          2.20.5 清除动作活体检测历史数据

          # bdface_action_live_clear_history
          enum BDFaceStatusCode bdface_action_live_clear_history(
          const BDFaceInstance face_instance);

          参数说明:

          参数名 类型 说明
          face_instance const BDFaceInstance 人脸SDK实例对象指针

          返回值说明:

          返回类型 说明
          enum BDFaceStatusCode 状态码,详见状态码说明
          上一篇
          Android-SDK
          下一篇
          常见问题