Files

73 lines
1.9 KiB
C

#ifndef __XM_DMS_H__
#define __XM_DMS_H__
#include "svp_comm.h"
#ifdef __cplusplus
extern "C" {
#endif
#define DMS_EPSILON 1e-6f
#define DMS_DETECTION_MODEL 3
#define DMS_KEYPOINT 68
#define DMS_INT_FRAME 10
#define DMS_EYES_THRE 0.25
#define DMS_OUT_MOUTH_THRES 1.3
#define DMS_IN_MOUTH_THRES 0.7
#define DMS_IOU_THRES 0.1
typedef struct {
xmedia_bool close_eyes;
xmedia_bool yawn;
xmedia_bool phone;
xmedia_bool cigar;
} svp_dms_flag;
typedef struct {
xmedia_u8 close_eyes_frame;
xmedia_u8 yawn_frame;
xmedia_u8 phone_frame;
xmedia_u8 cigar_frame;
xmedia_u8 id_frame;
} svp_dms_frame;
typedef struct {
xmedia_float left_ear; // 左眼宽高比
xmedia_float right_ear; // 右眼宽高比
xmedia_float out_mar; // 外嘴宽高比
xmedia_float in_mar; // 内嘴宽高比
xmedia_float pitch; // 俯仰角
xmedia_float yaw; // 偏航角
xmedia_float roll; // 翻滚角
} svp_dms_state;
typedef struct {
svp_dms_flag flag;
svp_dms_frame frame;
svp_dms_state state;
xmedia_s32 id;
} svp_dms_alarm_report;
typedef struct {
yolov8_detect_param *detect_info;
svp_dms_alarm_report alarm_report;
xmedia_u8 warn_frame; // 警告帧数
xmedia_float iou_thres; // 相交阈值,建议值0.1f
} svp_dms_context;
xmedia_s32 dms_init(xmedia_void *context, const xmedia_svp_task_cfg cfg);
xmedia_s32 dms_uninit(xmedia_void *context);
xmedia_s32 dms_set_attr(xmedia_void *context, const xmedia_svp_dms_attr *task_attr);
xmedia_s32 dms_get_attr(xmedia_void *context, xmedia_svp_dms_attr *task_attr);
xmedia_s32 dms_process(xmedia_void *context, const xmedia_svp_task_input *input, xmedia_svp_dms_output *output);
#ifdef __cplusplus
}
#endif
#endif