Video Analysis底层库拆分,sdk的go封装
chenshijun
2020-09-09 a3dc3aa4ec63bcc7844bc4ae7a77f992b9fa74dd
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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
#ifndef _ITS_VEHICLE_TYPE_REC_H_
#define _ITS_VEHICLE_TYPE_REC_H_
 
#define VTR_API extern "C" __attribute__((visibility("default"))) 
 
#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)    //³¬¹ýÏß³ÌÊÚȨÊýÄ¿
 
 
/***************³µÅÆÑÕÉ«******************/
typedef enum
{
    E_PLATE_COLOR_NOT,  //δ֪
    E_PLATE_COLOR_BLUE,
    E_PLATE_COLOR_BLACK,
    E_PLATE_COLOR_YELLOW,
    E_PLATE_COLOR_WHITE,
    E_PLATE_COLOR_GREEN,
    E_PLATE_COLOR_GREEN_YELLOW
}E_Plate_Color;
 
 
 
/***************³µÅÆÀàÐÍ******************/
typedef enum
{
    E_PLATE_TYPE_NOT = 0,          //δ֪
    E_PLATE_TYPE_NORMAL_BLUE,  //ÆÕͨÀ¶ÅÆ
    E_PLATE_TYPE_NORMAL_BLACK, //ÆÕͨºÚÅÆ
    E_PLATE_TYPE_NORMAL_YELLOW,//ÆÕͨµ¥²ã»ÆÅÆ
    E_PLATE_TYPE_DOUBLE_YELLOW,//Ë«²ã»ÆÅÆ
    E_PLATE_TYPE_POLICE,       //°×É«¾¯ÅÆ
    E_PLATE_TYPE_WJ,           //°×É«Î侯
    E_PLATE_TYPE_ARMY,         //°×É«¾üÅÆ
    E_PLATE_TYPE_GANG,         //¸ÛÅÆ
    E_PLATE_TYPE_NONG,         //Å©ÓóµÅÆ
    E_PLATE_TYPE_ENERGY,       //ÐÂÄÜÔ´³µÅÆ--´¿ÂÌÉ«
    E_PLATE_TYPE_ENERGY_Y,     //ÐÂÄÜÔ´³µ----»ÆÂÌÉ«
    E_PLATE_TYPE_INDIVI,       //¸öÐÔ»¯³µÅÆ
    E_PLATE_TYPE_EMBASSY,      //ʹ¹Ý³µ
}E_Plate_Type;
 
 
typedef struct
{
    E_Plate_Color ePlateColor;
    E_Plate_Type  ePlateType;
    char platenumber[20];         //³µÅƺÅÂë
    int iPlateConfidence;
    int iCharNum;
    int iCharConfidence[20];
}PlateInfor;
 
 
/***************³µÉíÑÕÉ«******************/
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, //dzɫ
}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; //³µÁ¾Éîdzɫ
    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);
 
 
 
#endif