#pragma once #ifndef _RETRI_LIB_H_ #define _RETRI_LIB_H_ #include #include "opencv2/opencv.hpp" #define RETRI_FEAT_DIM 128 #define RETRI_INPUT_WIDTH 224 #define RETRI_INPUT_HEIGHT 224 #define RETRI_ALL_OK 0x00000000 // #define RETRI_OUTPUT_SHAPE_ERROR 0x10080001 // 输出的维度有错误 #define RETRI_INPUT_IMAGE_EMPTY 0x10080002 // 输入的图像为空 #define RETRI_HANDLE_NULL 0x10080003 // 输入的句柄为空 #define RETRI_OUTPUT_NULL 0x10080004 // 输入的返回结构体为空 #define RETRI_SESSION_NULL 0x10080005 // #define RETRI_INIT_MODEL_PATH_NOT_EXIST 0x10080006 // 输入的模型路径不存在 #define RETRI_CREATE_NET_FAILED 0x10080007 // 创建的模型失败 #define RETRI_GET_NET_INPUT_FAILED 0x10080008 // 获取输入tensor失败 #define RETRI_GET_NET_OUTPUT_CLS_FAILED 0x10080009 // 获取输出tensor失败 #define RETRI_GET_NET_OUTPUT_FEAT_FAILED 0x1008000A // 获取输出tensor失败 #define RETRI_GET_NET_SESSION_FAILED 0x1008000B // 获取输出session失败 #define RETRI_FREE_SESSION_FAILED 0x1008000C // 释放session失败 #define RETRI_INPUT_SIZE_ERROR 0x1008000D // 模型中获取的输入形状与设置的不一致 #define RETRI_OUTPUT_CLS_SIZE_ERROR 0x10080010 // 模型中获取的输出维度与设置的不一致 #define RETRI_OUTPUT_FEA_SIZE_ERROR 0x10080011 // 模型中获取的输出维度与设置的不一致 #define RETRI_GETINFO_NAME_ILLEGAL 0x10080012 // 获取当前信息的Name非法 #define RETRI_INIT_CACHE_DIR_CREATE_FAILED 0x10080013 // 创建cache dir失败 typedef struct _RETRI_REGISTER_RES_ { int success_flag; // 注册成功标志位:0-失败 1-成功 }RETRI_REGISTER_RES; typedef struct _RETRI_INPUT_ { cv::Mat img; }RETRI_INPUT; typedef struct _RETRI_OUTPUT_ { float feat[RETRI_FEAT_DIM]; }RETRI_OUTPUT; // 定义算法的识别设备 typedef enum _RETRI_DEVICE_ { RETRI_CPU = 0x0000, // CPU RETRI_GPU = 0x0001, // GPU }RETRI_DEVICE; /*************************************************************************************************** * 功 能: 初始化 * 参 数: * const char* model_path - I 模型路径或者cache路径文件夹路径 * 1. 内部会判断是文件夹还是文件 * 2. 如果是文件夹,则会在该文件夹下产生cache * 3. 如果设置为NULL,则cache产生在当前exe同级目录下 * RETRI_DEVICE device_name - I 设备类型 * void** retri_handle - O 句柄 * 返回值: 错误码 ***************************************************************************************************/ int RETRI_Init(const char* model_path, RETRI_DEVICE device_type, void** retri_handle); /*************************************************************************************************** * 功 能: 识别 * 参 数: * RETRI_INPUT in_img - I 输入图片 * RETRI_OUTPUT* retri_output - O 返回识别结果 * void* handle - I 句柄 * 返回值: 错误码 ***************************************************************************************************/ int RETRI_Process(RETRI_INPUT in_img, RETRI_OUTPUT* retri_output, void* handle); /*************************************************************************************************** * 功 能: 获取信息 * 参 数: * void* handle - I 句柄 * char* name - I 信息名字 * 目前支持:running_device * void* info - O 信息 * 返回值: 错误码 ***************************************************************************************************/ int RETRI_GetInfo(void* handle,const char* name, void* info); /*************************************************************************************************** * 功 能: 释放句柄 * 参 数: * void** handle - I 句柄 * 返回值: 错误码 ***************************************************************************************************/ int RETRI_Release(void** handle); #endif