zhangmeng
2019-12-11 9c954d95aa299c48bb9a53f45217610e9c27bef8
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
127
128
129
130
131
132
133
134
135
136
137
138
139
#ifndef _ITS_VEHICLE_TYPE_REC_H_
#define _ITS_VEHICLE_TYPE_REC_H_
#include "PlateType.h"
 
#define  MAX_VEHICLE_NUM  (5)
 
#define  MAX_FACE_NUM     (10)
 
#define  MAX_CHAR_NUM     (10)
 
#define  OK                 (0)     //初始化正确
#define  DATA_OUT           (-1)    //SDK过期
#define  KEY_ERROR          (-2)    //未找到加密狗
#define  MODE_PATH_ERROR    (-3)    //mode文件错误
#define  MAC_KEY_ERROR      (-4)    //mac地址加密文件错误
#define  THREAD_ERROR       (-5)    //超过线程授权数目
 
 
#define VTR_API extern "C" __attribute__((visibility("default"))) 
 
/***************车身颜色******************/
typedef enum
{
    E_VEHICLE_COLOR_NOT,//未知
    E_VEHICLE_RED,      //红色
    E_VEHICLE_GREEN,    //绿色
    E_VEHICLE_BLUE,     //蓝色
    E_VEHICLE_PINK,     //粉色
    E_VEHICLE_BROWN,    //棕色
    E_VEHICLE_YELLOW,   //黄色
    E_VEHICLE_WHITE,    //白色
    E_VEHICLE_BLACK,    //黑色
    E_VEHICLE_GRAY,     //灰色(银色)
    E_VEHICLE_CYAN,     //青色
}E_Vehicle_Color;
 
typedef enum
{
    E_VEHICLE_DARK,  //深色
    E_VEHICLE_LIGHT, //浅色
}E_Vehicle_Bright;
 
typedef enum 
{
    E_RGB,
    E_BGR,
    E_YUV420,  
}V_ImageType;  //图片格式
 
typedef struct
{
    int       iImageHeight;
    int       iImageWidth;
    V_ImageType eType;
    unsigned char *pImageData;
}V_Image; //图像格式
 
 
typedef struct  
{
    int iLeft;
    int iTop;
    int iRight;
    int iBottom;
}S_Rect;
 
 
typedef struct
{
    int iPlateFlag;                //是否识别到车牌
    PlateInfor plateInfor;         //车牌信息
    S_Rect plateRect;              //车牌位置
    S_Rect tempVehicleRect;        //车辆位置
    
    char tempVehicleType[1024];    //车辆类型--总名称  jeep-大切诺基-2004
    char tempVehicleBrand[1024];   //车辆品牌       jeep
    char tempVehicleSub[1024];     //车辆子型号     大切诺基
    char tempVehicleType1[1024];   //车辆类型   轿车 货车  客车  面包车
 
    float fVDConf;          //车辆检测置信度
 
    float fConfdence;              //车辆类型置信度
    int iVehicleSubModel;          //车型名称索引
    E_Vehicle_Bright eVehicleBright; //车辆深浅色
    E_Vehicle_Color eVehicleColor1;//车身主颜色
    E_Vehicle_Color eVehicleColor2;//车身辅颜色
 
    unsigned char*pCaptureImage; //视频模式识别下抓拍的图片数据,必须调用时开辟,图片识别模式下不必开辟
                                 //开辟大小为输入图片宽高乘积的3倍,且视频模式下每次只输出一个识别结果
                                 //(注:此抓拍结果图的存储顺若输入图像是YUV格式,则为RGBRGB,否则与输如图像顺序相同)
    int iImageWidth;             //视频模式下抓拍图像宽度
    int iImageHeight;            //视频模式下抓拍图像高度
 
}ITS_Vehicle_Result_Single;
 
 
typedef struct
{
    ITS_Vehicle_Result_Single tempResult[MAX_VEHICLE_NUM];
    int iNum;
    float fLprTime;
    float fVtrTime;
}ITS_Vehicle_Result;
 
 
typedef struct
{
    int iSceneMode;   //场景模式:   0---顶装       1----侧装    2---顶装路径   3---停车场   4----公安
    int iModelMode;   //读取模型方式:0---原始模型   1---修改模型
}ITS_Rec_Param;
 
 
 
//利用车牌识别,车辆检测进行车型识别
VTR_API int  ITS_ThreadInit(char* fullKeyPath);  
 
VTR_API int  ITS_GetThreadNum();  //获得加密锁支持的线程数目
 
VTR_API void * ITS_VehicleRecInit(char* modePath, int& iInitFlag, ITS_Rec_Param its_param);//modePath为model文件夹的路径名
 
VTR_API int ITS_VehicleTypeRec_new_1(void* pInstance,V_Image* pVImage,S_Rect* roi,ITS_Vehicle_Result* pResult, char plateResult[64]);
 
VTR_API int ITS_VehicleTypeRec(void* pInstance,V_Image* pVImage,S_Rect* roi,ITS_Vehicle_Result* pResult);
 
VTR_API void ITS_VehicleRecRelease(void* pInstance);
 
VTR_API void ITS_BinPlate(V_Image* pSrcPlate, V_Image* pBinPlate, int plateType);
 
 
VTR_API void*FeatureExt_Init(char* modePath,int& iFeatureLen);
 
VTR_API void FeatureExt_Extract(void* pInstance, V_Image* pImage, S_Rect* vehicleRoi,float* fFeature);
 
VTR_API void FeatureExt_Release(void* pInstance);
 
 
 
 
#endif