1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#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