1*4882a593Smuzhiyun #ifndef _RKNN_ZERO_COPY_DEMO_POSTPROCESS_H_ 2*4882a593Smuzhiyun #define _RKNN_ZERO_COPY_DEMO_POSTPROCESS_H_ 3*4882a593Smuzhiyun 4*4882a593Smuzhiyun #include <stdint.h> 5*4882a593Smuzhiyun #include <vector> 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun #define OBJ_NAME_MAX_SIZE 16 8*4882a593Smuzhiyun #define OBJ_NUMB_MAX_SIZE 64 9*4882a593Smuzhiyun #define OBJ_CLASS_NUM 80 10*4882a593Smuzhiyun #define NMS_THRESH 0.45 11*4882a593Smuzhiyun #define BOX_THRESH 0.25 12*4882a593Smuzhiyun #define PROP_BOX_SIZE (5+OBJ_CLASS_NUM) 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun typedef struct _BOX_RECT 15*4882a593Smuzhiyun { 16*4882a593Smuzhiyun int left; 17*4882a593Smuzhiyun int right; 18*4882a593Smuzhiyun int top; 19*4882a593Smuzhiyun int bottom; 20*4882a593Smuzhiyun } BOX_RECT; 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun typedef struct __detect_result_t 23*4882a593Smuzhiyun { 24*4882a593Smuzhiyun char name[OBJ_NAME_MAX_SIZE]; 25*4882a593Smuzhiyun BOX_RECT box; 26*4882a593Smuzhiyun float prop; 27*4882a593Smuzhiyun } detect_result_t; 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun typedef struct _detect_result_group_t 30*4882a593Smuzhiyun { 31*4882a593Smuzhiyun int id; 32*4882a593Smuzhiyun int count; 33*4882a593Smuzhiyun detect_result_t results[OBJ_NUMB_MAX_SIZE]; 34*4882a593Smuzhiyun } detect_result_group_t; 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun int post_process(int8_t *input0, int8_t *input1, int8_t *input2, int model_in_h, int model_in_w, 37*4882a593Smuzhiyun float conf_threshold, float nms_threshold, float scale_w, float scale_h, 38*4882a593Smuzhiyun std::vector<int32_t> &qnt_zps, std::vector<float> &qnt_scales, 39*4882a593Smuzhiyun detect_result_group_t *group); 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun void deinitPostProcess(); 42*4882a593Smuzhiyun #endif //_RKNN_ZERO_COPY_DEMO_POSTPROCESS_H_ 43