#ifndef __RKNN_SDK_H__ #define __RKNN_SDK_H__ #include // 返回错误码 enum XErrorCode { RKNN_SUCCEED = 0, RKNN_NOT_INIT = -1, //SDK未初始化 RKNN_INVAILD_IMGSIZE = -2, //输入图像尺寸不匹配模型输入要求 RKNN_INVAILD_PARAM = -3, //参数无效 }; enum ObjCls { OBJ_Unknown = -1, //未知 OBJ_MaoGouWan = 0, //猫碗/狗碗 OBJ_BTYDiZuo = 1, //吧台椅底座 OBJ_FSDiZuo = 2, //风扇底座 OBJ_XiYiJi = 3, //洗衣机 OBJ_BingXiang = 4, //冰箱 OBJ_MaTong = 5, //马桶 OBJ_TiZhongCheng = 6, //体重秤 OBJ_DianXian = 7, //电线 OBJ_DianShiJi = 8, //电视机 OBJ_CanZhuo = 9, //餐桌 OBJ_DiTan = 10, //地毯 OBJ_MaBu = 11, //抹布 OBJ_ChaJi = 12, //茶几 OBJ_DianShiGui = 13, //电视柜 OBJ_XieZi = 14, //拖鞋/鞋子 OBJ_WaZi = 15, //袜子 OBJ_YiGui = 16, //衣柜 OBJ_Chuang = 17, //床 OBJ_ShaFa = 18, //沙发 OBJ_YiZi = 19, //椅子 OBJ_Men = 20, //门 OBJ_DLS = 21, //da li shi OBJ_DiBan = 22 //di ban //OBJ_Xiang = 21 //宠物粪便 }; // 图像信息与buffer typedef struct _InputData { int shape[4]; // Num, Channel, Height, Width void* data; // img.data } InputData; // 检测结果 typedef struct _DetRet { int nID; //图像ID int nLabel; //物体类别 ObjCls nLabel; //物体类别 float fConf; //置信度 float fLeft; //检测框左上角比例坐标x_min -> int(x_min*width) 获取像素坐标 float fTop; //检测框左上角比例坐标y_min -> int(y_min*height) 获取像素坐标 float fRight; //检测框右下角比例坐标x_max -> int(x_max*width) 获取像素坐标 float fBottom; //检测框右下角比例坐标y_max -> int(y_max*height) 获取像素坐标 } DetRet; #define RKNNSDK_API(retType) retType /// #ifdef __cplusplus extern "C" { #endif typedef uint64_t rknn_handle; /* RKNN_Create SDK加载模型,仅初始化一次; input: rknn_handle hd 句柄 const char* model_path 模型路径 return: int 错误码 */ RKNNSDK_API(int) RKNN_Create(rknn_handle* hd, const char* model_path); /* RKNN_ObjDet 输入图像,获取检测结果和检测目标数量; input: rknn_handle hd 句柄 const InputData* input_data 输入图像数据 DetRet** det_ret 获取检测结果 int* det_num 获取检测目标数量 return: int 错误码 */ RKNNSDK_API(int) RKNN_ObjDet(rknn_handle hd, const InputData* input_data, DetRet** det_ret, int* det_num); /* RKNN_Release SDK资源释放,仅在程序退出前调用; input: rknn_handle hd 句柄 return: int 错误码 */ RKNNSDK_API(int) RKNN_Release(rknn_handle hd); #ifdef __cplusplus } #endif #endif //__RKNN_SDK_H__