libclsc3d_es.h 4.5 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 123 124 125 126
#pragma once
#ifndef _CLSC3D_ES_LIB_H_
#define _CLSC3D_ES_LIB_H_

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

#define		CLSC3D_ES_CLS_TOP_N 10
#define		CLSC3D_ES_INPUT_CHANNELS 1280
#define		CLSC3D_ES_INPUT_DEPTH 3
#define		CLSC3D_ES_INPUT_WIDTH 7
#define		CLSC3D_ES_INPUT_HEIGHT 7

#define		CLSC3D_ES_OUTPUT_CLSNUM 101

#define		CLSC3D_ES_ALL_OK							0x00000000			//
#define		CLSC3D_ES_OUTPUT_SHAPE_ERROR				0x10070001			// 输出的维度有错误
#define		CLSC3D_ES_INPUT_IMAGE_EMPTY					0x10070002			// 输入的图像为空
#define		CLSC3D_ES_HANDLE_NULL						0x10070003			// 输入的句柄为空
#define		CLSC3D_ES_OUTPUT_NULL						0x10070004			// 输入的返回结构体为空
#define		CLSC3D_ES_SESSION_NULL						0x10070005			// 
#define		CLSC3D_ES_INIT_MODEL_PATH_NOT_EXIST			0x10070006			// 输入的模型路径不存在
#define		CLSC3D_ES_CREATE_NET_FAILED					0x10070007			// 创建的模型失败
#define		CLSC3D_ES_GET_NET_INPUT_FAILED				0x10070008			// 获取输入tensor失败
#define		CLSC3D_ES_GET_NET_OUTPUT_CLS_FAILED			0x10070009			// 获取输出tensor失败
#define		CLSC3D_ES_GET_NET_OUTPUT_FEAT_FAILED		0x1007000A			// 获取输出tensor失败
#define		CLSC3D_ES_GET_NET_SESSION_FAILED			0x1007000B			// 获取输出session失败
#define		CLSC3D_ES_FREE_SESSION_FAILED				0x1007000C			// 释放session失败
#define		CLSC3D_ES_INPUT_SIZE_ERROR					0x1007000D			// 模型中获取的输入形状与设置的不一致
#define		CLSC3D_ES_OUTPUT_CLS_SIZE_ERROR				0x10070010			// 模型中获取的输出维度与设置的不一致
#define		CLSC3D_ES_OUTPUT_FEA_SIZE_ERROR				0x10070011			// 模型中获取的输出维度与设置的不一致
#define		CLSC3D_ES_GETINFO_NAME_ILLEGAL				0x10070012			// 获取当前信息的Name非法
#define		CLSC3D_ES_INIT_CACHE_DIR_CREATE_FAILED		0x10070013			// 创建cache dir失败



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

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

// 输入
typedef struct _CLSC3D_ES_INPUT_
{
	std::vector<cv::Mat> imgs;
}CLSC3D_ES_INPUT;

typedef struct _CLSC3D_ES_OUTPUT_
{
	CLSC3D_ES_CLS_RET cls[CLSC3D_ES_CLS_TOP_N];
	float feat[CLSC3D_ES_INPUT_DEPTH];
}CLSC3D_ES_OUTPUT;


// 定义算法的识别设备
typedef enum _CLSC3D_ES_DEVICE_
{
	CLSC3D_ES_CPU = 0x0000,  // CPU
	CLSC3D_ES_GPU = 0x0001,  // GPU
}CLSC3D_ES_DEVICE;

// 定义初始化的输入信息
typedef struct _CLSC3D_INIT_INFO_
{
	CLSC3D_ES_DEVICE init_device;
	const char* model_path;
}CLSC3D_INIT_INFO;

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


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

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

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



#endif