73 lines
1.9 KiB
C
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
|
|
|