libclsretri.h 4.41 KB
Newer Older
郝文豪's avatar
郝文豪 committed
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 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
#pragma once
#ifndef _CLSRETRI_LIB_H_
#define _CLSRETRI_LIB_H_

#include <vector>
 
#include "opencv2/opencv.hpp"

#define		CLSRETRI_CLS_TOP_N 10
#define		CLSRETRI_FEAT_DIM 160
#define		CLSRETRI_INPUT_WIDTH 224
#define		CLSRETRI_INPUT_HEIGHT 224
#define		CLSRETRI_CLS_DIM 1000

#define		CLSRETRI_ALL_OK								0x00000000			//
#define		CLSRETRI_OUTPUT_SHAPE_ERROR					0x10030001			// 输出的维度有错误
#define		CLSRETRI_INPUT_IMAGE_EMPTY					0x10030002			// 输入的图像为空
#define		CLSRETRI_HANDLE_NULL						0x10030003			// 输入的句柄为空
#define		CLSRETRI_OUTPUT_NULL						0x10030004			// 输入的返回结构体为空
#define		CLSRETRI_SESSION_NULL						0x10030005			// 
#define		CLSRETRI_INIT_MODEL_PATH_NOT_EXIST			0x10030006			// 输入的模型路径不存在
#define		CLSRETRI_CREATE_NET_FAILED					0x10030007			// 创建的模型失败
#define		CLSRETRI_GET_NET_INPUT_FAILED				0x10030008			// 获取输入tensor失败
#define		CLSRETRI_GET_NET_OUTPUT_CLS_FAILED			0x10030009			// 获取输出tensor失败
#define		CLSRETRI_GET_NET_OUTPUT_FEAT_FAILED			0x1003000A			// 获取输出tensor失败
#define		CLSRETRI_GET_NET_SESSION_FAILED				0x1003000B			// 获取输出session失败
#define		CLSRETRI_FREE_SESSION_FAILED				0x1003000C			// 释放session失败
#define		CLSRETRI_INPUT_SIZE_ERROR					0x1003000D			// 模型中获取的输入形状与设置的不一致
#define		CLSRETRI_OUTPUT_CLS_SIZE_ERROR				0x10030010			// 模型中获取的输出维度与设置的不一致
#define		CLSRETRI_OUTPUT_FEA_SIZE_ERROR				0x10030011			// 模型中获取的输出维度与设置的不一致
#define		CLSRETRI_GETINFO_NAME_ILLEGAL				0x10030012			// 获取当前信息的Name非法
#define		CLSRETRI_INIT_CACHE_DIR_CREATE_FAILED		0x10030013			// 创建cache dir失败

typedef struct _CLSRETRI_REGISTER_RES_
{
	int success_flag;	// 注册成功标志位:0-失败  1-成功
}CLSRETRI_REGISTER_RES;

// 分类的结果
typedef struct _CLSRETRI_CLS_RET_
{
	float prob;			// 置信度
	int label;			// 识别类别
}CLSRETRI_CLS_RET;

// 检索的结果
typedef struct _CLSRETRI_RETRI_RET_
{
	float similarity;   // 相似度
	int index;	 		// 检索位置
	int label;			// 检索类别
}CLSRETRI_RETRI_RET;

typedef struct _CLSRETRI_INPUT_
{
	cv::Mat img;

}CLSRETRI_INPUT;

typedef struct _CLSRETRI_OUTPUT_
{
	CLSRETRI_CLS_RET cls[CLSRETRI_CLS_TOP_N];
	float feat[CLSRETRI_FEAT_DIM];
}CLSRETRI_OUTPUT;


// 定义算法的识别设备
typedef enum _CLSRETRI_DEVICE_
{
	CLSRETRI_CPU = 0x0000,  // CPU
	CLSRETRI_GPU = 0x0001,  // GPU
}CLSRETRI_DEVICE;



/***************************************************************************************************
* 功  能: 初始化
* 参  数:
*         const char*				model_path		- I       模型路径或者cache路径文件夹路径
*																	1. 内部会判断是文件夹还是文件
*                                                                   2. 如果是文件夹,则会在该文件夹下产生cache
*                                                                   3. 如果设置为NULL,则cache产生在当前exe同级目录下
*         CLSRETRI_DEVICE			device_name		- I       设备类型
*         void**					clsretri_handle	- O       句柄
* 返回值: 错误码
***************************************************************************************************/
int CLSRETRI_Init(const char* model_path,
					CLSRETRI_DEVICE device_type,
					void** clsretri_handle);


/***************************************************************************************************
* 功  能: 识别
* 参  数:
*         CLSRETRI_INPUT		in_img				- I			输入图片
*         CLSRETRI_OUTPUT*		clsretri_output		- O			返回识别结果
*         void*					handle				- I			句柄
* 返回值: 错误码
***************************************************************************************************/
int CLSRETRI_Process(CLSRETRI_INPUT in_img, CLSRETRI_OUTPUT* clsretri_output, void* handle);

/***************************************************************************************************
* 功  能: 获取信息
* 参  数:
*         void*					handle				- I			句柄
*         char*					name				- I			信息名字
*																目前支持:running_device
*         void*					info				- O			信息
* 返回值: 错误码
***************************************************************************************************/
int CLSRETRI_GetInfo(void* handle,const char* name, void* info);

/***************************************************************************************************
* 功  能: 释放句柄
* 参  数:
*         void**			handle	- I			句柄
* 返回值: 错误码
***************************************************************************************************/
int CLSRETRI_Release(void** handle);



郝文豪's avatar
郝文豪 committed
123
#endif