#ifndef _RKNN_YOLOV5_DEMO_POSTPROCESS_H_ #define _RKNN_YOLOV5_DEMO_POSTPROCESS_H_ #include #include #define OBJ_NAME_MAX_SIZE 16 #define OBJ_NUMB_MAX_SIZE 64 // 移除 #define OBJ_CLASS_NUM 80 #define NMS_THRESH 0.45 #define BOX_THRESH 0.25 // 移除 #define PROP_BOX_SIZE (5 + OBJ_CLASS_NUM) typedef struct _BOX_RECT { int left; int right; int top; int bottom; } BOX_RECT; typedef struct __detect_result_t { char name[OBJ_NAME_MAX_SIZE]; BOX_RECT box; float prop; } detect_result_t; typedef struct _detect_result_group_t { int id; int count; detect_result_t results[OBJ_NUMB_MAX_SIZE]; } detect_result_group_t; /** * @brief [新增] 初始化后处理模块 * @param label_path 标签文件的路径 * @param class_num 模型的类别数 (例如 80) * @return int 0 表示成功, -1 表示失败 */ int initPostProcess(const char *label_path, int class_num); /** * @brief [修改] post_process 函数签名 * @param class_num [新增] 模型的类别数, 必须与 initPostProcess 中使用的一致 */ int post_process(int8_t *input0, int8_t *input1, int8_t *input2, int model_in_h, int model_in_w, float conf_threshold, float nms_threshold, BOX_RECT pads, float scale_w, float scale_h, std::vector &qnt_zps, std::vector &qnt_scales, int class_num, // <-- 新增参数 detect_result_group_t *group); /** * @brief [修改] deinitPostProcess 释放动态分配的 g_labels */ void deinitPostProcess(); #endif //_RKNN_YOLOV5_DEMO_POSTPROCESS_H_