bonus-edge-proxy/src/rknn/postprocess.h

57 lines
1.6 KiB
C++

#ifndef _RKNN_YOLOV5_DEMO_POSTPROCESS_H_
#define _RKNN_YOLOV5_DEMO_POSTPROCESS_H_
#include <stdint.h>
#include <vector>
#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<int32_t> &qnt_zps, std::vector<float> &qnt_scales,
int class_num, // <-- 新增参数
detect_result_group_t *group);
/**
* @brief [修改] deinitPostProcess 释放动态分配的 g_labels
*/
void deinitPostProcess();
#endif //_RKNN_YOLOV5_DEMO_POSTPROCESS_H_