libretri.h 3.91 KB
#pragma once
#ifndef _RETRI_LIB_H_
#define _RETRI_LIB_H_

#include <vector>
 
#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