HeidiFaceDetectCreateHandle(unsigned long long config, const char *param_path, HeidiHandle *handle);
参数说明
参数名 | 参数类型 | 参数说明 |
---|---|---|
config | unsigned long long | 人脸检测算法的配置 |
strModelPath | const char * | 模型文件所在路径 |
handle | HeidiHandle* | 句柄 |
返回值
成功返回 HEIDI_CODE_SUC, 失败返回相应错误码, 具体请参考 HeidiPublicDefines.h
备注
人脸检测算法的可配置选项如下
● 设置模型类型
我们目前只提供小模型一种模型,且该选项必须设置。
符号 | 数值 | 含义 |
---|---|---|
HEIDI_INIT_SMALL_MODEL | 0x00200000 | faster detection algorithm 更快 |
● 设置检测模式
检测模式分为视频检测和图片检测两类,其中图片检测模式分为普通模式和高级模式,高级模式相比普通模式检测效果更好,能检测到更小的人脸,但相应耗时会增加。检测模式选项如下表所示。如果没有设置,默认检测模式为BEF_DETECT_MODE_VIDEO。
符号 | 数值 | 含义 |
---|---|---|
HEIDI_MOBILE_DETECT_MODE_VIDEO | 0x00020000 | video detect, 视频检测 |
HEIDI_MOBILE_DETECT_MODE_IMAGE | 0x00040000 | image detect, 图片检测 |
HEIDI_MOBILE_DETECT_MODE_IMAGE_SLOW | 0x00080000 | 效果更好的图片检测模式,能检测更小的人脸 |
● 设置可检测的特征
可检测的人脸特征选项如下表所示。
符号 | 数值 | 含义 |
---|---|---|
HEIDI_MOBILE_FACE_DETECT | 0x00000001 | 106 key points face detect, 106 点人脸检测 |
HEIDI_MOBILE_EYE_BLINK | 0x00000002 | 眨眼 |
HEIDI_MOBILE_MOUTH_AH | 0x00000004 | mouth open, 嘴巴大张 |
HEIDI_MOBILE_HEAD_YAW | 0x00000008 | shake head, 摇头 |
HEIDI_MOBILE_HEAD_PITCH | 0x00000010 | nod, 点头 |
HEIDI_MOBILE_BROW_JUMP | 0x00000020 | wiggle eyebrow, 眉毛挑动 |
HEIDI_MOBILE_MOUTH_POUT | 0x00000040 | 嘴巴嘟嘴 |
HEIDI_MOBILE_DETECT_FULL | 0x0000007F | 检测上面所有的特征 |
创建人脸检测句柄时,config = 模型类型(必须设置)|检测模式(缺省值为缺省值为HEIDI_MOBILE_DETECT_MODE_VIDEO)|可检测的特征(必须设置)
int HeidiFaceDetectCheckLicense(HeidiHandle handle, const char* licensePath);
参数说明
参数名 | 参数类型 | 参数说明 |
---|---|---|
handle | HeidiHandle | 已创建的人脸检测句柄 |
licensePath | const char * | 授权文件路径 |
返回值
成功返回 HEIDI_CODE_SUC, 失败返回相应错误码, 具体请参考 HeidiPublicDefines.h
int HeidiFaceDetectAddExtraModel(HeidiHandle handle, unsigned long long config, const char *param_path);
参数说明
参数名 | 参数类型 | 参数说明 |
---|---|---|
handle | HeidiHandle | 已创建的人脸检测句柄 |
config | unsigned long long | 指定240模型的模型参数,创建240或者280 |
param_path | const char * | 模型的文件路径 |
返回值
成功返回 HEIDI_CODE_SUC, 失败返回相应错误码, 具体请参考 HeidiPublicDefines.h
备注
设置人脸检测240/280关键点检测模型时,使用的是步骤1中创建的106关键点检测的handle,240/280关键点是基于106关键点检测结果的扩展。
config可以设置的值有
// Config-240,HEIDI_MOBILE_FACE_240_DETECT // Config-280,HEIDI_MOBILE_FACE_280_DETECT // Config-240 快速模式, HEIDI_MOBILE_FACE_240_DETECT | HEIDI_MOBILE_FACE_240_DETECT_FASTMODE // Config-280 快速模式, HEIDI_MOBILE_FACE_280_DETECT | HEIDI_MOBILE_FACE_240_DETECT_FASTMODE
int HeidiFaceDetectSetParam(HeidiHandle handle, HeidiFsFaceParamType type, float value);
参数说明
参数名 | 参数类型 | 参数说明 |
---|---|---|
handle | HeidiHandle | 已创建的人脸检测句柄 |
type | HeidiFsFaceParamType | 需要设置的人脸检测类型 |
value | float | 具体设置的值 |
返回值
成功返回 HEIDI_CODE_SUC, 失败返回相应错误码, 具体请参考 HeidiPublicDefines.h
人脸关键点检测结果定义在FaceDetect.h中,具体如下:
// 眼睛,眉毛,嘴唇详细检测结果, 280点结果 typedef struct HeidiAiFaceExtInfo { int eye_count; // 检测到眼睛数量 int eyebrow_count; // 检测到眉毛数量 int lips_count; // 检测到嘴唇数量 int iris_count; // 检测到虹膜数量 Point eye_left[22]; // 左眼关键点 Point eye_right[22]; // 右眼关键点 Point eyebrow_left[13]; // 左眉毛关键点 Point eyebrow_right[13]; // 右眉毛关键点 Point lips[64]; // 嘴唇关键点 Point left_iris[20]; // 左虹膜关键点 Point right_iris[20]; // 右虹膜关键点 } HeidiAiFaceExtInfo; // 供106点使用 typedef struct HeidiAiFace106 { Rect rect; // 代表面部的矩形区域 float score; // 置信度 Point points_array[106]; // 人脸106关键点的数组 float visibility_array[106]; // 对应点的能见度,点未被遮挡1.0, 被遮挡0.0 float yaw; // 水平转角,真实度量的左负右正 float pitch; // 俯仰角,真实度量的上负下正 float roll; // 旋转角,真实度量的左负右正 float eye_dist; // 两眼间距 int ID; // faceID: 每个检测到的人脸拥有唯一的faceID.人脸跟踪丢失以后重新被检测到,会有一个新的faceID unsigned int action; // 动作, 定义在bef_ai_effect_face_detect.h unsigned int tracking_cnt; } HeidiAiFace106, *pHeidiAiFace106; // @brief 检测结果 typedef struct HeidiAiFaceInfo { HeidiAiFace106 base_infos[HEIDI_MAX_FACE_NUM]; // 检测到的人脸信息 HeidiAiFaceExtInfo extra_infos[HEIDI_MAX_FACE_NUM]; // 眼睛,眉毛,嘴唇关键点等额外的信息 int face_count; // 检测到的人脸数目 } HeidiAiFaceInfo, *pHeidiAiFaceInfo;
人脸关键点检测调用如下接口:
int HeidiFaceDetect( HeidiHandle handle, const unsigned char *image, ColorSpaceType pixel_format, int image_width, int image_height, int image_stride, ClockwiseRotateType orientation, unsigned long long detect_config, HeidiAiFaceInfo *p_face_info );
参数说明
参数名 | 参数类型 | 参数说明 |
---|---|---|
handle | HeidiHandle | 已创建的人脸检测句柄 |
image | const unsigned char * | 输入图片的数据指针 |
pixel_format | ColorSpaceType | 输入图片的格式 |
image_width | int | 输入图像的宽度 (以像素为单位) |
image_height | int | 输入图像的高度 (以像素为单位) |
image_stride | int | 输入图像每一行的步长 (以像素为单位) |
orientation | ClockwiseRotateType | 输入图像的转向,具体请参考 bef_effect_ai_public_define.h 中的 bef_rotate_type |
detect_config | unsigned long long | 人脸检测相关的配置,例如HEIDI_MOBILE_FACE_DETECT | HEIDI_MOBILE_DETECT_EYEBALL |
p_face_info | HeidiAiFaceInfo * | 接受人脸检测结果 |
返回值
成功返回 HEIDI_CODE_SUC, 失败返回相应错误码, 具体请参考 HeidiPublicDefines.h
int HeidiFaceDetectReleaseHandle(HeidiHandle handle);
参数说明
参数名 | 参数类型 | 参数说明 |
---|---|---|
handle | HeidiHandle | 已创建的人脸检测句柄 |