/************************************************************ * Version: face_detect_v1.4.1.20201221.x86_64.gpu * CopyRight: 中科视语(北京)科技有限公司 * UpdateDate: 20201221 * Content: ************************************************************/ #ifndef FACEDETECT_H_ #define FACEDETECT_H_ #ifdef _MSC_VER #ifdef FACEDETECT_EXPORTS #define FACEDETECT_API __declspec(dllexport) #else #define FACEDETECT_API __declspec(dllimport) #endif #else #define FACEDETECT_API __attribute__ ((visibility ("default"))) #endif #ifdef __cplusplus extern "C" { #endif #include "sy_common.h" //通用数据结构体定义 // #define GPUIMG_PROCESS #ifndef FACIALFEAPOINTSIZE //关键点检测支持25个点 #define FACIALFEAPOINTSIZE 25 #endif #ifndef __FD_INFO__ #define __FD_INFO__ typedef struct fd_info { sy_rect face_position; //人脸位置 float face_pos_score; //人脸框置信度 sy_point facial_fea_point[FACIALFEAPOINTSIZE]; //人脸关键点位置信息 int occlusion; //人脸遮挡度,范围值为0-100,越大表示人脸遮挡程度越高 int clarity; //人脸清晰度,范围值为0-100,越大表示图像越清晰,人脸清晰度判别建议阈值为30 int brightness; //人脸亮度,只有3种可能的值:[-1->太暗,0->正常,1->太亮],亮度结果会受亮度阈值参数brightness_min和brightness_max影响 //int hat; //带帽子,范围为0-100,越大表示越可能有佩戴帽子,建议判别阈值为50 //int glass; //带眼镜,范围为0-100,越大表示越可能有戴眼镜,建议判别阈值为70 float roll; //姿态角 float yaw; //姿态角 float pitch; //姿态角 float score; //人脸置信度 } fd_info; #endif #ifndef __FD_RESULT__ #define __FD_RESULT__ typedef struct fd_result { //结果结构体 fd_info *info; //内存由外部申请 int count; //人脸个数 } fd_result; #endif #ifndef __FD_PARAM__ #define __FD_PARAM__ typedef struct fd_param { sy_command facial_fea_point_config; //是否启动关键点检测 sy_command pose_config; //是否启动姿态角 sy_command quality_config; //是否启动质量检测 sy_command score_config; //是否启动人脸置信度 // int log; //日志 // int mode; //运行模式(DEVICE_GPU / DEVICE_CPU) int devId; //指定显卡id float thresld; //检测阈值 建议0.7 int max_result_count; //检测结果目标数上限 // int max_batch_size_detect; //检测批处理检测数量上限 // int max_batch_size_ldmk; //关键点批处理检测数量上限 // int max_batch_size_pose; //姿态角批处理检测数量上限 // int max_batch_size_score; //置信度批处理检测数量上限 // int max_batch_size_blurglass; //质量(模糊)批处理检测数量上限 // //int max_batch_size_hat; //质量(帽子)批处理检测数量上限 // int max_batch_size_occlusion; //质量(遮挡)批处理检测数量上限 char * auth_license; char* det_modelNames; //人脸检测 char* ldmk_modelNames; //人脸关键点 char* pose_modelNames; //人脸姿态 char* score_modelNames; //人脸置信度 char* fuzzy_modelNames; //人脸质量_模糊 char* occlusion_modelNames; //人脸质量_遮挡 fd_param() : facial_fea_point_config(SY_CONFIG_OPEN), pose_config(SY_CONFIG_OPEN), \ quality_config(SY_CONFIG_OPEN), score_config(SY_CONFIG_OPEN), thresld(0.6), devId(0), max_result_count(20), auth_license("") {}; //默认功能全部启动 }fd_param; #endif /************************************************************************* * function: fd_init * purpose: init resources * param: [in] handle - handle [in] param - init param * return: success(0) or error code(<0) * notes: null *************************************************************************/ FACEDETECT_API int fd_init(void ** handle, fd_param param); /************************************************************************* * function: fd_release * purpose: release sources * param: [in] handle - handle * return: null * notes: null *************************************************************************/ FACEDETECT_API void fd_release(void ** handle); /************************************************************************* * function: fd_get_version * purpose: get sdk version * param: null * return: null * notes: null *************************************************************************/ FACEDETECT_API const char * fd_get_version(); /************************************************************************* * function: fd_detect_batch * purpose: detect faces * param: [in] handle - handle [in] img_data_array - data array [in] format - data format [in] batch_size - batch size [in] result - face detect result * return: success(0) or error code(<0) * notes: null *************************************************************************/ //FACEDETECT_API int fd_detect_batch(void * handle, sy_img * img_data_array, sy_format format, int batch_size, fd_result *result); /************************************************************************* * function: fd_detect * purpose: detect faces * param: [in] handle - handle [in] img_data_array - data array [in] format - data format [in] result - face detect result * return: success(0) or error code(<0) * notes: null *************************************************************************/ FACEDETECT_API int fd_detect(void * handle, sy_img img_data, sy_format format, fd_result *result); FACEDETECT_API int fd_detect_batch(void * handle, sy_img * img_data_array, sy_format format, int batch_size, fd_result *result); #ifdef __cplusplus }; #endif #endif