57 lines
1.6 KiB
C++
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_
|