Video Analysis底层库拆分,sdk的go封装
zhangzengfei
2019-11-19 a8ff93a0cf274795f0e9c3d66093f1c4c6ccf972
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
#ifndef _LPRECOGNITION_H_
#define _LPRECOGNITION_H_
 
 
#define LPR_API extern "C" __attribute__((visibility("default"))) 
 
#define  LPR_OK               0   //³õʼ»¯ÕýÈ·
#define  LPR_KEY_ERROR       -1   //δÕÒµ½¼ÓÃܹ·
 
 
 
//³µÅÆÀàÐÍ
typedef enum
{
    E_PT_NOTKNOWN,     //δ֪ÀàÐÍ
    E_PT_NORMAL_BLUE,  //ÆÕͨÀ¶ÅÆ
    E_PT_NORMAL_BLACK, //ÆÕͨºÚÅÆ
    E_PT_NORMAL_YELLOW,//ÆÕͨµ¥²ã»ÆÅÆ
    E_PT_DOUBLE_YELLOW,//Ë«²ã»ÆÅÆ
    E_PT_POLICE,       //°×É«¾¯ÅÆ
    E_PT_WJ,           //°×É«Î侯
    E_PT_ARMY,         //°×É«¾üÅÆ
    E_PT_GANG,         //¸ÛÅÆ
    E_PT_NONG,         //Å©ÓóµÅÆ----ÍÏÀ­»ú
    E_PT_ENERGY,       //ÐÂÄÜÔ´³µ----ÂÌÉ«
    E_PT_ENERGY_Y,     //ÐÂÄÜÔ´³µ----»ÆÉ«
    E_PT_INDIVI,       //¸öÐÔ»¯³µÅÆ
    E_PT_EMBASSY,      //ʹ¹Ý³µ
    E_PT_YINGJI,       //Ó¦¼±³µÅÆ 
}LPR_LPlateType;
 
//³µÉíÑÕÉ«
typedef enum
{
    E_VC_NOTKNOWN, //δ֪
    E_VC_WHITE,    //°×
    E_VC_SILVER,   //»Ò
    E_VC_YELLOW,   //»Æ
    E_VC_RED,      //ºì
    E_VC_GREEN,    //ÂÌ
    E_VC_BLUE,     //À¶
    E_VC_BLACK,    //ºÚ
}LPR_LVehicleColor;
 
typedef enum
{
    E_VC_DARK,  //ÉîÉ«
    E_VC_LIGHT, //dzɫ
}LPR_LVehicleBright;
 
typedef enum
{
    E_LPR_RGB,
    E_LPR_BGR,
}LPR_ImageType;
 
typedef struct  
{
    int iLeft;
    int iTop;
    int iRight;
    int iBottom;
}LPR_Rect;
 
typedef struct 
{
    LPR_ImageType eImageType;  //ͼÏñÀàÐÍ
    int iImageMode;           //0£ºÎªÖ¡Ä£Ê½ 1£ºÎª³¡Ä£Ê½
    int iRecMode;             //ʶ±ðģʽ£¬0£ºµ¥ÕÅͼƬʶ±ð£¬1:ÊÓÆµ¼ì²â+ʶ±ð£¬2£ºÊÓÆµ¶àÖ¡ÈÚºÏʶ±ð(×¢£º1ģʽ±È2ģʽ¿ì£¬µ«Ê¶±ðÂʺͲ¶»ñÂʱÈ2µÍ)
                              
    int iResultNum;           //Êä³ö½á¹û²ÎÊý£¬×î¶àÖ§³ÖÊä³ö4¸ö½á¹û
    int iMinPlateWidth;       //ʶ±ð×îС³µÅÆ¿í¶È
    int iMaxPlateWidth;       //ʶ±ð×î´ó³µÅÆ¿í¶È
        
    /******************½ÃÕý²ÎÊý******************/
    int iHorCorrect;  //ÊÇ·ñ×öˮƽÇãб½ÃÕý,Èô²»×öˮƽÇãб½ÃÕý£¬ÔòËã·¨ÄÚ²¿²»»á×ö´¹Ö±´íÇнÃÕý
    int iVerCorrect;  //ÊÇ·ñ×ö´¹Ö±´íÇнÃÕý
    
    int iMinHorAngle; 
    int iMaxHorAngle;//ˮƽ½ÃÕý½Ç¶È·¶Î§£¬Ö§³Ö×î´ó½Ç¶ÈΪ[-30¡ã£¬30¡ã]
    int iMinVerAngle;
    int iMaxVerAngle;//´¹Ö±½ÃÕý½Ç¶È·¶Î§£¬Ö§³Ö×î´ó½Ç¶ÈΪ[-30¡ã£¬30¡ã]
 
    int iPlateBornThr;        //³µÅÆÊä³öÖ¡ÊýãÐÖµ£º¼È³µÅƳöÏÖ´óÓÚ´ËÖ¡Êý£¬ÔòÊä³ö½á¹û
    int iPlateNumThr;         //³µÅƳöÏÖ´ÎÊýãÐÖµ£º¼È³µÅƳöÏÖСÓÚ´ËÊýÄ¿£¬Ôò²»Êä³ö
    int iPlateDeadThr;        //³µÅÆÏûʧ֡Êý£ºÕë¶ÔÊÓÆµÓ¦Ó㬳µÅÆÏûʧ´óÓÚ´ËãÐÖµ£¬½øÐÐÊä³ö
 
    int iImageWidth;          //ͼƬ¿í¶È 
    int iImageHeight;         //ͼƬ¸ß¶È
 
    char pLocalChinese[3];    //±¾µØºº×Ö×Ö·û£¬Èç¹û´Ë×Ö·ûÉèÖÃΪ¿Õ»òÕß31¸öÊ¡·ÝÖ®ÍâµÄ×Ö£¬Ôò²»Ê¹ÓÃÊ׺º×Ö
 
    //´ËЩÏîÕë¶Ô³µÐÍʶ±ðÓÐÓã¬ÆäÓàÎÞÓÃ
    float fExpLeftRightR;     //³µÁ³×óÓÒÀ©³ä(³µÅƵĿí¶È)±¶Êý ²Î¿¼ÖµÎª1.6
    float fExpTopR;           //³µÁ³Éϲ¿À©³ä(³µÅƵĸ߶È)±¶Êý ²Î¿¼ÖµÎª6.0
    float fExpBottomR;        //³µÁ³Ï²¿À©³ä(³µÅƵĸ߶È)±¶Êý ²Î¿¼ÖµÎª1.5
}LPR_RecParma;
 
typedef struct
{
    int iYear;
    int iMonth;
    int iDay;
    int iHour;
    int iMinute;
    int iSecond;
    int iMilliseconds;
}LPR_Time;
 
typedef struct  
{
    int iYear;
    int iMonth;
    int iDay;
}LPR_DATE;
typedef struct  
{
    char number[20];            //ʶ±ð½á¹û
    LPR_Rect PlateRect;         //³µÅÆÎ»ÖÃ
    int x[4];
    int y[4];
    int iConfidence;            //³µÅÆÖÃÐŶÈ
    LPR_LPlateType ePlateType;  //³µÅÆÀàÐÍ
    int iMoveDir;               //³µÁ¾Ô˶¯·½Ïò 0£º³¯½üÔ˶¯£¬1£º³¯Ô¶Ô˶¯£¬-1£ºÎ´Öª
    LPR_LVehicleColor eVColor1; //³µÉíÖ÷ÑÕÉ«
    LPR_LVehicleColor eVColor2; //³µÉí´ÎÑÕÉ«
    LPR_LVehicleBright eVehicleBright; //³µÁ¾Éîdzɫ
    unsigned char *pResultBits; //ÊÓÆµÊ¶±ðģʽÖÐ×¥ÅĵÄͼƬ,ÊÓÆµÄ£Ê½Ê¶±ðÏÂÓÐЧ£¬ÐèÒª¿ª±Ù
    
    int iFramNo;                //ÊÓÆµÄ£Ê½ÏÂÖ¡ºÅ
    LPR_Time sTime;             //ÊÓÆµÊ¶±ðģʽÖÐ×¥ÅÄ´ËÕÅͼµÄʱ¼ä
    
    //Õë¶Ô³µÁ³Ê¶±ðÓ¦ÓôËÏÆäÓàÎÞÓÃ
    unsigned char  *pVehicleFaceImage; //¶ÔÓ¦µÄ³µÁ³µÄͼƬ,ÐèÒªÌáǰ¿ª±ÙÄڴ棬¿ª±Ù¸ö×î´óÄÚ´æ¾Í¿ÉÒÔ£¬¿í¸ß¿ÉÒÔ¶¼Îª1000
    int iVehicleFaceWidth;             //³µÁ³¿í¶È
    int iVehicleFaceHeight;            //³µÁ³¸ß¶È
    int iGrayFaceFlag;                 //³µÁ³ÊÇ·ñΪ»Ò¶Èͼ
 
    LPR_Rect charLocation[20]; //³µÅÆ×Ö·ûµÄλÖÃ(»ùÓÚ´óͼ)
    int charConfidence[20];    //×Ö·ûʶ±ðÖÃÐŶÈ
    int iCharNum;              //³µÅÆ×Ö·ûÊýÄ¿
}LPR_Result;
 
LPR_API int LPR_ThreadInit(char* fullkeypath);
 
LPR_API void LPR_SetRecThr(void* pInstance,int iThr); //ÉèÖóµÅÆÊ¶±ðãÐÖµ£º0~5,0×î¿íËÉ£¬5×îÑϸñ£¬Ä¬ÈÏΪ3
 
LPR_API void* LPR_Init(LPR_RecParma RecParma);  //³õʼ»¯,ÿ¸öÏ̶߳¼±ØÐëµ÷ÓÃÒ»´Î
 
LPR_API int   LPR_RecImage(unsigned char *pBits, int iWidth, int iHeight ,LPR_Result* pLprResult,LPR_Rect* recROI,void* pInstance);//ʶ±ð
 
LPR_API int   LPR_RecImage_mobile(unsigned char *pBits, int iWidth, int iHeight ,LPR_Result* pLprResult,LPR_Rect* recROI,void* pInstance);//ʶ±ð
 
LPR_API void  LPR_Uninit(void* pInstance);       //ÊÍ·Å
 
 
 
//ÔÆ¶Ëʶ±ð½Ó¿Ú
LPR_API void* LPR_Cloud_Init(LPR_RecParma RecParma, char* fullModel);
 
LPR_API int   LPR_Cloud_RecImage(unsigned char *pBits, int iWidth, int iHeight ,LPR_Result* pLprResult,LPR_Rect* recROI,void* pInstance);//ʶ±ð
 
LPR_API void  LPR_Cloud_Uninit(void* pInstance);       
 
 
 
#endif