You need to enable JavaScript to run this app.
导航
人脸属性(FaceAttribute)
最近更新时间:2025.03.14 11:48:18首次发布时间:2025.03.14 10:07:49
我的收藏
有用
有用
无用
无用

详细接口说明查看头文件:FaceAttribute.h

1.创建人脸属性检测句柄
BEF_SDK_API int HeidiFaceAttributeCreateHandle(
        unsigned long long config,
        const char * strModelPath,
        HeidiHandle *handle
);

参数说明

参数名参数类型参数说明
configunsigned long long人脸属性检测算法的配置
strModelPathconst char *模型文件所在路径
handleHeidiHandle *创建的人脸属性检测句柄

返回值
成功返回 HEIDI_CODE_SUC, 失败返回相应错误码, 具体请参考 HeidiPublicDefines.h

2.人脸属性授权
int HeidiFaceAttributeCheckLicense(HeidiHandle handle, const char* licensePath);

参数说明

参数名参数类型参数说明
handleHeidiHandle已创建的人脸检测句柄
licensePathconst char *授权文件路径

返回值
成功返回 HEIDI_CODE_SUC, 失败返回相应错误码, 具体请参考 HeidiPublicDefines.h

3.设置人脸属性检测参数
int HeidiFaceAttributeSetParam(
        HeidiHandle handle,
        HeidiFaceAttributeParamConfigType type,
        float value
);

参数说明

参数名参数类型参数说明
handleHeidiHandle已创建的人脸检测句柄
typeHeidiFaceAttributeParamConfigType需要设置的人脸检测类型,可参考 HeidiFaceAttributeParamConfigType
valuefloat具体设置的值

返回值
成功返回 HEIDI_CODE_SUC, 失败返回相应错误码, 具体请参考 HeidiPublicDefines.h

4.检测人脸属性

人脸属性检测结果定义在头文件FaceAttribute.h中,具体如下:

/*
 *@heidi 表情类别枚举
**/
typedef enum {
  HEIDI_FACE_ATTRIBUTE_ANGRY = 0,                   //生气
  HEIDI_FACE_ATTRIBUTE_DISGUST = 1,                 //厌恶
  HEIDI_FACE_ATTRIBUTE_FEAR = 2,                    //害怕
  HEIDI_FACE_ATTRIBUTE_HAPPY = 3,                   //高兴
  HEIDI_FACE_ATTRIBUTE_SAD = 4,                     //伤心
  HEIDI_FACE_ATTRIBUTE_SURPRISE = 5,                //吃惊
  HEIDI_FACE_ATTRIBUTE_NEUTRAL = 6,                 //平静
  HEIDI_FACE_ATTRIBUTE_NUM_EXPRESSION = 7           //支持的表情个数
} HeidiFaceAttributeExpressionType;

typedef enum {
  HEIDI_AGE          = 0x00000001,     ///< 年龄
  HEIDI_GENDER       = 0x00000002,     ///< 性别
  HEIDI_EXPRESSION   = 0x00000004,     ///< 表情
  HEIDI_ATTRACTIVE   = 0x00000008,     ///< 颜值
  HEIDI_HAPPINESS    = 0x00000010,     ///< 开心程度
  HEIDI_FILTER       = 0x00000040,     ///< 人脸类型
  HEIDI_QUALITY      = 0x00000080,     ///< 质量
  HEIDI_EXP_DEGREE   = 0x00000100,     ///< 表情程度
  HEIDI_EXTRA        = 0x00000200,     ///< 额外的属性
} HeidiAttrTypes;

/*
 *@heidi 单个人脸属性结构体
**/
typedef struct HeidiFaceAttributeInfo {
  float age;                          // 预测的年龄值, 值范围【0,100】之间
  float boy_prob;                     // 预测为男性的概率值,值范围【0.0,1.0】之间
  float attractive;                   // 预测的颜值分数,范围【0,100】之间
  float happy_score;                  // 预测的微笑程度,范围【0,100】之间
  HeidiFaceAttributeExpressionType exp_type;            // 预测的表情类别
  float exp_probs[HEIDI_FACE_ATTRIBUTE_NUM_EXPRESSION];    // 预测的每个表情的概率,未加平滑处理
  // extra
  float real_face_prob;               // 预测属于真人脸的概率,用于区分雕塑、漫画等非真实人脸
  float quality;                      // 预测人脸的质量分数,范围【0,100】之间
  float arousal;                      // 情绪的强烈程度
  float valence;                      // 情绪的正负情绪程度
  float sad_score;                    // 伤心程度
  float angry_score;                  // 生气程度
  float surprise_score;               // 吃惊的程度
  float mask_prob;                    // 预测戴口罩的概率
  float wear_hat_prob;                // 戴帽子的概率
  float mustache_prob;                // 有胡子的概率
  float lipstick_prob;                // 涂口红的概率
  float wear_glass_prob;              // 带普通眼镜的概率
  float wear_sunglass_prob;           // 带墨镜的概率
  float blur_score;                   // 模糊程度
  float illumination;                 // 光照
  float confused_prob;                ///< 疑惑表情概率
} HeidiFaceAttributeInfo;

人脸属性检测是以人脸106关键点作为输入,在106关键点的基础上,完成人脸属性的识别。
人脸属性检测接口分为单人脸输入和多人脸输入, 如果人脸检测结果中只有单个人脸,则调用单人脸输入的接口,接口定义如下:

int HeidiFaceAttributeDetect(
        HeidiHandle handle,
        const unsigned char *image,
        ColorSpaceType pixel_format,
        int image_width,
        int image_height,
        int image_stride,
        const HeidiAiFace106 *ptr_base_info,
        unsigned long long config,
        HeidiFaceAttributeInfo *ptr_face_attribute_info
);

参数说明

参数名参数类型参数说明
handleHeidiHandle已创建的人脸检测句柄
imageconst unsigned char *输入图片的数据指针
pixel_formatColorSpaceType输入图片的格式
image_widthint输入图像的宽度 (以像素为单位)
image_heightint输入图像的高度 (以像素为单位)
image_strideint输入图像每一行的步长 (以像素为单位)
ptr_base_infoconst HeidiAiFace106 *人脸检测结果
configunsigned long long人脸检测相关的配置
ptr_face_attribute_infoHeidiFaceAttributeInfo *人脸检测结果

返回值
成功返回 HEIDI_CODE_SUC, 失败返回相应错误码, 具体请参考 HeidiPublicDefines.h
如果人脸检测结果中有多个人脸,则调用多人脸输入的接口,接口定义如下:

int HeidiFaceAttributeDetectBatch(
        HeidiHandle handle,
        const unsigned char *image,
        ColorSpaceType pixel_format,
        int image_width,
        int image_height,
        int image_stride,
        const HeidiAiFace106 *ptr_base_info,
        int face_count,
        unsigned long long config,
        HeidiFaceAttributeResult *ptr_face_attribute_result
);

参数说明

参数名参数类型参数说明
handleHeidiHandle已创建的人脸检测句柄
imageconst unsigned char *输入图片的数据指针
pixel_formatColorSpaceType输入图片的格式
image_widthint输入图像的宽度 (以像素为单位)
image_heightint输入图像的高度 (以像素为单位)
image_strideint输入图像每一行的步长 (以像素为单位)
ptr_base_infoconst HeidiAiFace106 *人脸检测结果
face_countint人脸检测人脸数
configunsigned long long人脸检测相关的配置
ptr_face_attribute_resultHeidiFaceAttributeResult *人脸属性结果

返回值
成功返回 HEIDI_CODE_SUC, 失败返回相应错误码, 具体请参考 HeidiPublicDefines.h

5.销毁人脸属性检测句柄
int HeidiFaceAttributeReleaseHandle(
        HeidiHandle handle
);

参数说明

参数名参数类型参数说明
handleHeidiHandle已创建的人脸检测句柄