Video Analysis底层库拆分,sdk的go封装
zhangzengfei
2019-11-14 93001d715c38b296bedf2b2e5f4d1efb3151f666
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
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
// ***************************************************************
//  TH_PlateID.h   version:  4.0     date: 2010.4.12
//  -------------------------------------------------------------
//  Ç廪´óѧÖÇÄÜͼÎÄÐÅÏ¢´¦ÀíÑо¿ÊÒ¡£°æÈ¨ËùÓС£
//  -------------------------------------------------------------
//  Center for Intelligent Image and Document Information Processing
//  -------------------------------------------------------------
//  Copyright (C) 2007 - All Rights Reserved
// ***************************************************************
//   Author: Liu CS, Zhou J
// ***************************************************************
//        Revision history:
//            2010.4.12: v4.0, TH_PlateID³µÅÆÊ¶±ðSDKµÄ½Ó¿Ú
// ***************************************************************
 
#ifndef __TH_PLATEID_H_INCLUDE__
#define __TH_PLATEID_H_INCLUDE__
 
#if !defined(WIN32) && !defined(__stdcall)
#define __stdcall
#endif
 
#include "TH_ErrorDef.h"
 
#ifdef __cplusplus
extern "C" {
#endif
 
 
//³µÅÆÑÕÉ«
#define LC_UNKNOWN  0    // Î´Öª
#define LC_BLUE   1        // À¶É«
#define LC_YELLOW 2        // »ÆÉ«
#define LC_WHITE  3        // °×É«
#define LC_BLACK  4        // ºÚÉ«
#define LC_GREEN  5        // ÂÌÉ«
#define LC_YELLOWGREEN  6    //»ÆÂÌÉ«-´óÐÍÐÂÄÜÔ´³µÅÆÑÕÉ«
    
//³µÅÆÀàÐÍ
#define LT_UNKNOWN  0   //δ֪³µÅÆ
#define LT_BLUE     1   //À¶ÅÆ
#define LT_BLACK    2   //ºÚÅÆ
#define LT_YELLOW   3   //µ¥ÅÅ»ÆÅÆ
#define LT_YELLOW2  4   //Ë«ÅÅ»ÆÅÆ£¨´ó³µÎ²ÅÆ£¬Å©Ó󵣩
#define LT_POLICE   5   //¾¯³µ³µÅÆ
#define LT_ARMPOL   6   //Î侯³µÅÆ
#define LT_INDIVI   7   //¸öÐÔ»¯³µÅÆ
#define LT_ARMY     8   //µ¥Åžü³µ
#define LT_ARMY2    9   //˫Şü³µ
#define LT_EMBASSY  10  //ʹ¹ÝÅÆ
#define LT_HONGKONG 11  //Ïã¸ÛÅÆ
#define LT_TRACTOR  12  //ÍÏÀ­»ú
#define LT_MACAU    13  //°ÄÃÅÅÆ
#define LT_CHANGNEI 14  //³§ÄÚÅÆ
#define LT_MINHANG  15  //Ãñº½ÅÆ
#define LT_CONSULATE 16 //ÁìʹݳµÅÆ
#define LT_NEWENERGY 17 //ÐÂÄÜÔ´³µÅÆ-СÐͳµ
#define LT_NEWENERGY2 18 //ÐÂÄÜÔ´³µÅÆ-´óÐͳµ
 
//³µÁ¾ÑÕÉ«
#define LGRAY_DARK    0    //Éî
#define LGRAY_LIGHT    1    //dz
 
#define LCOLOUR_WHITE    0    //°×    
#define LCOLOUR_SILVER    1    //»Ò(Òø)
#define LCOLOUR_YELLOW    2    //»Æ
#define LCOLOUR_PINK    3    //·Û
#define LCOLOUR_RED        4    //ºì
#define LCOLOUR_GREEN    5    //ÂÌ
#define LCOLOUR_BLUE    6    //À¶
#define LCOLOUR_BROWN    7    //ר 
#define LCOLOUR_BLACK    8    //ºÚ
 
 
//Ô˶¯·½Ïò
#define DIRECTION_UNKNOWN    0
#define DIRECTION_LEFT    1
#define DIRECTION_RIGHT    2
#define DIRECTION_UP    3
#define DIRECTION_DOWN    4
 
//ͼÏñ¸ñʽ£¨TH_SetImageFormatº¯ÊýµÄcImageFormat²ÎÊý£©
#define ImageFormatRGB        0            //RGBRGBRGB...
#define ImageFormatBGR        1            //BGRBGRBGR...
#define ImageFormatYUV422    2            //YYYY...UU...VV..    (YV16)
#define ImageFormatYUV420COMPASS 3        //YYYY...UV...        (NV12)
#define ImageFormatYUV420    4            //YYYY...U...V...    (YU12)
#define ImageFormatUYVY        5            //UYVYUYVYUYVY...    (UYVY)
#define ImageFormatNV21        6            //YYYY...VU...        (NV21)
#define ImageFormatYV12        7            //YYYY...V...U        (YV12)
#define ImageFormatNV16     8           //YYYY...UVUV...    (NV16»òYUV422SP) UVÁз½Ïò³éÑù£¬Ðз½Ïò²»±ä 
 
//³µÅÆÀàÐÍÖ§³ÖÉèÖö¨Òå
//£¨TH_SetEnabledPlateFormatº¯ÊýµÄdFormat²ÎÊý£©
#define PARAM_INDIVIDUAL_ON          0        // ¸öÐÔ»¯³µÅÆ¿ªÆô
#define PARAM_INDIVIDUAL_OFF         1        // ¸öÐÔ»¯³µÅƹرÕ
#define PARAM_TWOROWYELLOW_ON         2        // Ë«²ã»ÆÉ«³µÅÆ¿ªÆô
#define PARAM_TWOROWYELLOW_OFF         3        // Ë«²ã»ÆÉ«³µÅƹرÕ
#define PARAM_ARMPOLICE_ON           4        // µ¥²ãÎ侯³µÅÆ¿ªÆô
#define PARAM_ARMPOLICE_OFF          5        // µ¥²ãÎ侯³µÅƹرÕ
#define PARAM_TWOROWARMY_ON          6        // Ë«²ã¾ü¶Ó³µÅÆ¿ªÆô
#define PARAM_TWOROWARMY_OFF         7        // Ë«²ã¾ü¶Ó³µÅƹرÕ
#define PARAM_TRACTOR_ON             8        // Å©Ó󵳵ů¿ªÆô
#define PARAM_TRACTOR_OFF             9        // Å©Óóµ³µÅƹرÕ
#define PARAM_ONLY_TWOROWYELLOW_ON   10        // Ö»Ê¶±ðË«²ã»ÆÅÆ¿ªÆô
#define PARAM_ONLY_TWOROWYELLOW_OFF  11        // Ö»Ê¶±ðË«²ã»ÆÅƹرÕ
#define PARAM_EMBASSY_ON             12        // Ê¹¹Ý³µÅÆ¿ªÆô
#define PARAM_EMBASSY_OFF             13        // Ê¹¹Ý³µÅƹرÕ
#define PARAM_ONLY_LOCATION_ON         14        // Ö»¶¨Î»³µÅÆ¿ªÆô
#define PARAM_ONLY_LOCATION_OFF         15        // Ö»¶¨Î»³µÅƹرÕ
#define PARAM_ARMPOLICE2_ON             16        // Ë«²ãÎ侯³µÅÆ¿ªÆô
#define PARAM_ARMPOLICE2_OFF         17        // Ë«²ãÎ侯³µÅƹرÕ
#define PARAM_CHANGNEI_ON             18        // ³§ÄÚ³µÅÆ¿ªÆô
#define PARAM_CHANGNEI_OFF             19        // ³§ÄÚ³µÅƹرÕ
#define PARAM_MINHANG_ON             20        // Ãñº½³µÅÆ¿ªÆô
#define PARAM_MINHANG_OFF             21        // Ãñº½³µÅƹرÕ
#define PARAM_CONSULATE_ON           22     // ÁìʹݳµÅÆ¿ªÆô
#define PARAM_CONSULATE_OFF          23     // ÁìʹݳµÅƹرÕ
#define PARAM_NEWENERGY_ON           24     // ÐÂÄÜÔ´³µÅÆ¿ªÆô
#define PARAM_NEWENERGY_OFF          25     // ÐÂÄÜÔ´³µÅƹرÕ
 
#define RECOG_STAGE_ALL            0        // ÎÞ´íÎó
#define RECOG_STAGE_FINDPLATE    1        // Ã»ÓÐÕÒµ½³µÅÆ
#define RECOG_STAGE_PLATESCORE_ZERO    2    // ³µÅÆÆÀ¼ÛÖµ(0·Ö)
#define RECOG_STAGE_PLATESCORE_LOW    3    // ³µÅÆÆÀ¼ÛÖµ(²»¼°¸ñ)
#define RECOG_STAGE_RECOGSCORE_ZERO    4    // ³µÅÆÊ¶±ð·ÖÊý(0·Ö)
#define RECOG_STAGE_RECOGSCORE_LOW    5    // ³µÅÆÊ¶±ð·ÖÊý(²»¼°¸ñ)
 
    
//³µ±êÀàÐÍ
#define CarLogo_UNKNOWN       0    //δ֪
#define CarLogo_AUDI          1    //°ÂµÏ
#define CarLogo_BMW           2    //±¦Âí
#define CarLogo_BENZ          3    //±¼³Û
#define CarLogo_HONDA         4    //±¾Ìï
#define CarLogo_PEUGEOT       5    //±êÖ¾
#define CarLogo_BUICK         6    //±ð¿Ë
#define CarLogo_DASAUTO       7    //´óÖÚ
#define CarLogo_TOYOTA        8    //·áÌï
#define CarLogo_FORD          9    //¸£ÌØ
#define CarLogo_SUZUKI        10   //Áåľ
#define CarLogo_MAZDA         11   //Âí×Ô´ï
#define CarLogo_KIA           12   //ÆðÑÇ
#define CarLogo_NISSAN        13   //ÈÕ²úÄáÉ£
#define CarLogo_HYUNDAI       14   //ÏÖ´ú
#define CarLogo_CHEVROLET     15   //Ñ©·ðÀ¼
#define CarLogo_CITROEN       16   //Ñ©ÌúÁú
 
#define CarLogo_QIRUI         17   //ÆæÈð
#define CarLogo_WULING        18   //ÎåÁâ
#define CarLogo_DONGFENG      19   //¶«·ç
#define CarLogo_JIANGHUAI     20   //½­»´
#define CarLogo_BEIQI         21   //±±Æû
#define CarLogo_CHANGAN       22   //³¤°²
#define CarLogo_AOCHI         23   //°Â³Û
#define CarLogo_SHAOLING      24   //ÉÙÁÖ
#define CarLogo_SHANQI        25   //ÉÂÆû
#define CarLogo_SANLING       26   //ÈýÁâ
#define CarLogo_JILI          27   //¼ªÀû
#define CarLogo_HAOWO         28   //ºÀÎÖ
#define CarLogo_HAIMA         29   //º£Âí
#define CarLogo_HAFEI         30   //¹þ·É
#define CarLogo_CHANGCHENG    31   //³¤³Ç
#define CarLogo_FUTIAN        32   //¸£Ìï
#define CarLogo_NANJUN        33   //ÄÏ¿¥
#define CarLogo_LIUQI         34   //ÁøÆû
 
// ³µÁ¾ÀàÐÍ
#define CARTYPE_UNKNOWN        0    // Î´Öª
#define CARTYPE_SALOON        1    // ½Î³µ
#define CARTYPE_VAN            2    // Ãæ°ü³µ
 
typedef struct TH_RECT
{
    int left;
    int top;
    int right;
    int bottom;
}TH_RECT;
 
 
typedef struct TH_PlateIDCfg
{
    int nMinPlateWidth;                    // ¼ì²âµÄ×îС³µÅÆ¿í¶È£¬ÒÔÏñËØÎªµ¥Î»
    int nMaxPlateWidth;                    // ¼ì²âµÄ×î´ó³µÅÆ¿í¶È£¬ÒÔÏñËØÎªµ¥Î»
    
    int nMaxImageWidth;                    // ×î´óͼÏñ¿í¶È
    int nMaxImageHeight;                // ×î´óͼÏñ¸ß¶È
 
    unsigned char bVertCompress;        // ÊÇ·ñ´¹Ö±·½ÏòѹËõ1±¶ºóʶ±ð
    unsigned char bIsFieldImage;        // ÊÇ·ñÊdz¡Í¼Ïñ
    unsigned char bOutputSingleFrame;    // ÊÇ·ñÊÓÆµÍ¼ÏñÖÐͬһ¸ö³µµÄ¶à·ùͼÏñÖ»Êä³öÒ»´Î½á¹û        
    unsigned char bMovingImage;            // Ê¶±ðÔ˶¯or¾²Ö¹Í¼Ïñ
 
    unsigned char bIsNight;
    unsigned char nImageFormat;
 
    unsigned char * pFastMemory;        // DSPµÈµÄƬÄÚÄڴ棬ºÄʱ¶àµÄÔËËãÓÅÏÈʹÓÃÕâЩÄÚ´æ
    int nFastMemorySize;                // ¿ìËÙÄÚ´æµÄ´óС
 
    unsigned char *pMemory;                // ÆÕͨÄÚ´æµÄµØÖ·£¬ÄÚ½¨µÄÄÚ´æ¹ÜÀí£¬±ÜÃâÄÚ´æÐ¹Â©µÈÎÊÌâ
    int nMemorySize;                    // ÆÕͨÄÚ´æµÄ´óС
 
    int (*DMA_DataCopy)(void *dst, void *src,int nSize);
    int (*Check_DMA_Finished)();
 
    int nLastError;            // ÓÃÓÚ´«µÝ´íÎóÐÅÏ¢
                            // 0: ÎÞ´íÎó
                            // 1: FindPlate(ûÓÐÕÒµ½³µÅÆ)
                            // 2: ³µÅÆÆÀ¼ÛÖµ(0·Ö)
                            // 3: ³µÅÆÆÀ¼ÛÖµ(²»¼°¸ñ)
                            // 4: ³µÅÆÊ¶±ð·ÖÊý(0·Ö)
                            // 5: ³µÅÆÊ¶±ð·ÖÊý(²»¼°¸ñ)
    int nErrorModelSN;        // ³ö´íµÄÄ£¿é±àºÅ
    unsigned char nOrderOpt;            //Êä³ö˳ÐòÑ¡Ïî 0-ÖÃÐŶȠ1-×ÔÉ϶øÏ 2-×Ô϶øÉÏ
    unsigned char bLeanCorrection;        // ÊÇ·ñÆôÓóµÅÆÐýת¹¦ÄÜ£¬Ä¬ÈÏ¿ªÆô
    unsigned char bMovingOutputOpt;       // 0-ÄÚ²¿ÍÆËÍ+Íⲿ»ñÈ¡ 1:Íⲿ»ñÈ¡    
    unsigned char nImproveSpeed;        // 0: Ê¶±ðÂÊÓÅÏÈ 1:ʶ±ðËÙ¶ÈÓÅÏÈ
    unsigned char bCarLogo;             // 0: ²»¼ì²â³µ±ê 1: ¼ì²â³µ±ê
    unsigned char bLotDetect;            // 0: ²»¼ì²â³µÎ» 1: ¼ì²â³µÎ»
 
    unsigned char bShadow;              // 0: Õë¶ÔÎÞÒõÓ°µÄ³µÅÆ 1£ºÕë¶ÔÓÐÒõÓ°µÄ³µÅÆ£¬Ä¬ÈÏ¿ªÆô
    unsigned char bUTF8;                // 0:ºº×ÖGBK,1:ºº×ÖUTF-8
    unsigned char bShieldRailing;        // 0: ÆÁ±ÎÀ¸¸Ë¸ÉÈÅ£¬ 1:²»ÆÁ±ÎÀ¸¸Ë¸ÉÈÅ
    unsigned char bCarModel;        // 0: ²»Ê¶±ð³µÐÍ£¬ 1: Ê¶±ð³µÐÍ
    //char reserved[110];                // WIN_X86
    char reserved[110+128];                // WIN_X64
 
}TH_PlateIDCfg;
 
 
typedef struct TH_PlateIDResult 
{
    char license[16];    // ³µÅÆ×Ö·û´®
    char color[8];        // ³µÅÆÑÕÉ«
 
    int nColor;            // ³µÅÆÑÕÉ«
    int nType;            // ³µÅÆÀàÐÍ
    int nConfidence;    // ÕûÅÆ¿ÉÐŶÈ
    int nBright;        // ÁÁ¶ÈÆÀ¼Û
    int nDirection;        // ³µÅÆÔ˶¯·½Ïò£¬0 unknown, 1 left, 2 right, 3 up, 4 down 
    
    TH_RECT rcLocation;                // ³µÅÆ×ø±ê
    const unsigned char *pbyBits;    /* ¸Ãʶ±ð½á¹û¶ÔÓ¦µÄͼƬµÄ»º³åÇø, Ö»Óе± bOutputSingleFrame = true Ê±£¬¸ÃÖ¸Õë²ÅÓÐЧ¡£
                                    Ï´Îʶ±ðºó£¬¸Ã»º³åÇøÄÚÈݱ»¸²¸Ç¡£µ÷ÓóÌÐòÎÞÐèÊͷŸûº³åÇø¡£
                                    »º³åÇø´óСµÈÓÚ´«µÝ½øÀ´µÄͼƬÊý¾ÝµÄ³¤¶È*/
    int nTime;                        // Ê¶±ðºÄʱ
    unsigned char nCarBright;        //³µµÄÁÁ¶È
    unsigned char nCarColor;        //³µµÄÑÕÉ«
    unsigned char nCarLogo;         //³µ±êÀàÐÍ
    unsigned char nCarType;            //³µÁ¾ÀàÐÍ
    unsigned char *pbyPlateBin;     //³µÅƶþÖµ»¯½á¹û£¨°´bit´æ´¢£©
    unsigned short nBinPlateWidth;  //¶þÖµ»¯½á¹ûÖгµÅÆ¿í¶È
    unsigned short nBinPlateHeight; //¶þÖµ»¯½á¹ûÖгµÅƸ߶È
    char reserved[70];                //±£Áô
    TH_RECT rcLogoLocation;            // ³µ±ê×ø±ê
    unsigned short nCarModel;        // ³µÁ¾ÀàÐÍ
    unsigned short nCarModelConfidence;        //³µÐÍ¿ÉÐŶȠ   
}TH_PlateIDResult;
 
 
/************************************************************************/
/* TH_InitPlateIDSDK: ³õʼ»¯³µÅÆÊ¶±ðSDK£¬ÔÚʹÓøÃSDKµÄ¹¦ÄÜǰ            */
/*            ±ØÐèÇÒ½öÐèµ÷ÓÃÒ»´Î¸Ãº¯Êý                                    */
/*        Parameters:                                                        */
/*            pPlateConfig[in]: ³µÅÆÊ¶±ðSDKµÄÅäÖà                           */
/*        Return Value: int(ERR_Code)                                        */
/************************************************************************/
int __stdcall TH_InitPlateIDSDK(TH_PlateIDCfg *pPlateConfig);
 
/************************************************************************/
/* TH_UninitPlateIDSDK: ÊͷųµÅÆÊ¶±ðSDK£¬ÔÚʹÓøÃSDKµÄ¹¦Äܺ󠠠         */
/*            ±ØÐèÇÒ½öÐèµ÷ÓÃÒ»´Î¸Ãº¯Êý£¬ÒÔÊÍ·ÅÄÚ´æ¡£                        */
/*        Return Value: int(ERR_Code)                                        */
/************************************************************************/
int __stdcall TH_UninitPlateIDSDK(TH_PlateIDCfg *pPlateCfg);
 
/************************************************************************/
/* TH_RecogImage: Ê¶±ðÄÚ´æÖгµÅÆÍ¼Ïñ(Êä³öʶ±ðµ½µÄ¶à¸ö½á¹û)    */
/*        Parameters:                                                        */
/*            pbyBits[in]: Ö¸ÏòÄÚ´æÍ¼ÏñÊý¾ÝµÄÖ¸Õ룬3¸ö×Ö½Ú±íʾ1¸öÏñËØ        */
/*            nWidth[in]: Í¼ÏñµÄ¿í¶È                                        */
/*            nHeight[in]: Í¼ÏñµÄ¸ß¶È                                        */
/*            pResult[out]: ³µÅÆÊ¶±ð½á¹ûÊý×é, µ÷Ó÷½¿ª±ÙpResult[nResultNum]ÄÚ´æ*/
/*            nResultNum[in,out]: in ×î´óºòÑ¡³µÅƸöÊý£¬out Ê¶±ð³öµÄ³µÅƸöÊý*/
/*            prcRange[in]: Ö¸¶¨Ê¶±ð·¶Î§                                    */
/*        Return Value: int(ERR_Code)                                        */
/************************************************************************/
int __stdcall TH_RecogImage(const unsigned char *pbyBits, int nWidth, int nHeight, TH_PlateIDResult *pResult,
    int *nResultNum, const TH_RECT *prcRange, TH_PlateIDCfg *pPlateConfig);
 
/************************************************************************/
/* TH_EvaluateCarColor: Ê¶±ð³µµÄÑÕÉ«                                    */
/*        Parameters:                                                        */
/*            pbyBits[in]: Ö¸ÏòÄÚ´æÍ¼ÏñÊý¾ÝµÄÖ¸Õ룬3¸ö×Ö½Ú±íʾ1¸öÏñËØ        */
/*            nWidth[in]: Í¼ÏñµÄ¿í¶È                                        */
/*            nHeight[in]: Í¼ÏñµÄ¸ß¶È                                        */
/*            pResult[out]: ³µÅÆÊ¶±ð½á¹ûÊý×é, µ÷Ó÷½¿ª±ÙpResult[nResultNum]ÄÚ´æ*/
/*            nResultNum[in,out]: in ×î´óºòÑ¡³µÅƸöÊý£¬out Ê¶±ð³öµÄ³µÅƸöÊý*/
/*            prcRange[in]: Ö¸¶¨Ê¶±ð·¶Î§                                    */
/*        Return Value: int(ERR_Code)                                        */
/*        TH_EvaluateCarColor½ô½ÓTH_RecogImageÖ®ºóµ÷Ó㬱£³Ö²ÎÊý²»±ä        */
/************************************************************************/
int __stdcall TH_EvaluateCarColor(const unsigned char *pbyBits, int nWidth, int nHeight, TH_PlateIDResult *pResult,
    int *nResultNum, const TH_RECT *prcRange, TH_PlateIDCfg *pPlateConfig);
 
/************************************************************************/
/* TH_SetImageFormat: ÉèÖÃͼÏñ¸ñʽ                                        */
/*        Parameters:                                                        */
/*            cImageFormat[in]: Í¼Ïñ¸ñʽ                                    */
/*            bVertFlip[in]: ÊÇ·ñµßµ¹                                        */
/*            bDwordAligned[in]: ÊÇ·ñ4×Ö½Ú¶ÔÆë                            */
/*        Return Value: int(ERR_Code)                                        */
/************************************************************************/
int __stdcall TH_SetImageFormat( unsigned char cImageFormat, unsigned char bVertFlip, unsigned char bDwordAligned, TH_PlateIDCfg *pPlateConfig );
 
/************************************************************************/
/* TH_SetEnabledPlateFormat: ÉèÖÃÖ§³ÖµÄ³µÅÆÀàÐÍ                            */
/*        Parameters:                                                        */
/*            dFormat[in]: ³µÅÆÀàÐÍ¿ª¹Ø£¬ÀýÈçPARAM_INDIVIDUAL_ON            */
/*        Return Value: int(ERR_Code)                                        */
/************************************************************************/
int __stdcall TH_SetEnabledPlateFormat(unsigned int dFormat, TH_PlateIDCfg *pPlateConfig);
 
/************************************************************************/
/* TH_SetProvinceOrder: ÉèÖÃÊ¡·Ý×Ö·û´®                                    */
/*        Parameters:                                                        */
/*            szProvince[in]: Ä¬ÈÏÊ¡·Ý×Ö·û´®£¬ÀýÈç"¾©½ò¼½"£¬×î¶àÖ§³Ö8¸öÊ¡·Ý*/
/*        Return Value: int(ERR_Code)                                        */
/************************************************************************/
int __stdcall TH_SetProvinceOrder( char* szProvince, TH_PlateIDCfg *pPlateConfig);
 
/************************************************************************/
/* TH_SetRecogThreshold: ÉèÖÃʶ±ðãÐÖµ                                    */
/*        Parameters:                                                        */
/*            nPlateLocate_Th[in]: 0 - 9        --   7: Ä¬ÈÏãÐÖµ            */
/*                    nOCR_Th[in]: 0 - 9        --   5: Ä¬ÈÏãÐÖµ            */
/*                0: ×î¿íËɵÄãÐÖµ                                            */
/*                9:×îÑϸñµÄãÐÖµ                                            */
/*        Return Value: int(ERR_Code)                                        */
/************************************************************************/
int __stdcall TH_SetRecogThreshold( unsigned char nPlateLocate_Th, unsigned char nOCR_Th, TH_PlateIDCfg *pPlateCfg);
 
//¼ì²é¹¤×÷¹ý³ÌÖÐ×îСµÄÊ£ÓàÄڴ棬Èç¹û³öÏÖ¸ºÊý£¬ÔòÐèÒªÔö¼Ó¸ø¶¨µÄ³õʼÄÚ´æ
int __stdcall TH_CheckMinFreeMemory( int *pnMinFreeSRAM, int *pnMinFreeSDRAM, TH_PlateIDCfg *pPlateCfg);
 
/************************************************************************/
/* ¹¦ÄÜ: »ñÈ¡°æ±¾ºÅ                                                        */
/*        Parameters£ºÎÞ                                                    */
/*        ·µ»ØÖµ: ×Ö·û´® ¸ñʽ£ºÖ÷°æ±¾ºÅ.¸±°æ±¾ºÅ.ÐÞ¶©ºÅ.±àÒëºÅ            */
/*                ²»ÓÃÊͷŸÃÖ¸Õë¡£                                        */
/************************************************************************/
const char * __stdcall TH_GetVersion();
 
/************************************************************************/
/* ¹¦ÄÜ: »ñÈ¡¼ÓÃÜËøID, ¼ÓÃÜËøIDÊÇ8×Ö½ÚΨһID£¬                            */
/*        µ÷Óô˺¯ÊýǰÐèÒªµ÷ÓÃTH_InitPlateIDSDK                            */
/*        Parameters£º´æÔÚΨһIDʱ£¬ID1ÊÇǰ4×Ö½Ú,ID2ÊǺóËÄ×Ö½Ú            */
/*        ·µ»ØÖµ: 0-ÓÐΨһID                                                */
/*                1-ÎÞΨһID                                                */
/************************************************************************/
int __stdcall TH_GetKeyID(unsigned int* ID1, unsigned int* ID2);
 
/************************************************************************/
/* ¹¦ÄÜ: »ñÈ¡¼ÓÃÜËøÂ·ÊýÐÅÏ¢£¬                                            */
/*        Ê¹ÓÃTH_InitPlateIDSDKǰµ÷Óô˺¯Êý                                */
/*        Parameters£ºnMaxThread[out]:                                    */
/*        ·µ»ØÖµ:  int(ERR_Code)                                            */
/************************************************************************/
int __stdcall TH_GetKeyMaxThread(int* nMaxThread);
 
 
/************************************************************************/
/* ¹¦ÄÜ: ÉèÖõ±Ç°Ê¶±ðµÄ¶Ô±È¶ÈãÐÖµ                                        */
/*        Parameters£ºnContrast[int]:                                        */
/*        ¶Ô±È¶ÈÖ¸Êý nContrast[in]: 0 - 9                                    */
/*        ×îÄ£ºýʱÉèΪ1;×îÇåÎúʱÉèΪ9;×Ô¶¯Ì½²âÉèΪ0;ĬÈÏֵΪ0                */
/*        ·µ»ØÖµ:  int(ERR_Code)                                            */
/************************************************************************/
int __stdcall TH_SetContrast( unsigned char nContrast, TH_PlateIDCfg *pPlateCfg );
                                                                            
 
 
/************************************************************************/
/* TH_SetEnableCarTypeClassify: ÉèÖÃÊÇ·ñ³µÁ¾ÀàÐÍÅб𠠠                 */
/*        Parameters:                                                        */
/*            bCarTypeClass[in]: true:³µÐÍ·ÖÀà;                            */
/*                                false:²»½øÐгµÐÍ·ÖÀà                    */
/*        Return Value: int(ERR_Code)                                        */
/*        Ö§³Ö¸ñʽ: ImageFormatBGR, ImageFormatRGB,ImageFormatYUV422,
                ImageFormatUYVY,ImageFormatNV21*/
/************************************************************************/
int __stdcall TH_SetEnableCarTypeClassify( unsigned char bCarTypeClass, TH_PlateIDCfg *pPlateCfg);
 
 
/************************************************************************/
/* TH_SetEnableCarLogo: ÉèÖÃÊÇ·ñ³µ±êʶ±ð                                */
/*        Parameters:                                                        */
/*            bCarLogo[in]: true:³µ±êʶ±ð;                                */
/*                                false:²»½øÐгµ±êʶ±ð                    */
/*        Return Value: int(ERR_Code)                                        */
/************************************************************************/
int __stdcall TH_SetEnableCarLogo( unsigned char bCarLogo, TH_PlateIDCfg *pPlateCfg);
 
/************************************************************************/
/* TH_SetEnableCarWidth: ÉèÖÃÊÇ·ñ²âÁ¿³µÁ¾¿í¶È                            */
/*        Parameters:                                                        */
/*            bCarLogo[in]: true:²âÁ¿³µÁ¾¿í¶È;                            */
/*                            false:²»²âÁ¿³µÁ¾¿í¶È                        */
/*        Return Value: int(ERR_Code)                                        */
/************************************************************************/
int __stdcall TH_SetEnableCarWidth( unsigned char bCarWidth, TH_PlateIDCfg *pPlateCfg);
 
int __stdcall TH_SetReserveInfo(unsigned char* pSN);
int __stdcall TH_SetTFInfo(int Num, char *pTF);
 
// TH_SetDayNightMode: V4.3.13.0ÒÔºóº¯ÊýÎÞʵ¼ÊÒâÒ壬Ϊ±£Ö¤¼æÈÝÐÔ±£Áô´Ëº¯Êý
int __stdcall TH_SetDayNightMode( unsigned char bIsNight, TH_PlateIDCfg *pPlateConfig);
 
/************************************************************************/
/* TH_SetVideoModeOutPutPosRatio: ÉèÖÃÊÓÆµÄ£Ê½³µÅÆÊä³öλÖÃϵÊý                */
/*        Parameters:                                                        */
/*            ratio[in]: (0.1, 0.9);                                        */
/*        Return Value: int(ERR_Code)                                        */
/************************************************************************/
int __stdcall TH_SetVideoModeOutPutPosRatio(float ratio);
 
/************************************************************************/
/* TH_GetVehicleModelName: Êä³ö³µÐÍ×Ö·û´®£¬ÔÚµ÷ÓÃTH_RecogImageºóµ÷Óøú¯Êý*/
/*        Parameters:                                                        */
/*            nModel[in]: ³µÐÍÀàÐÍÖµ£¬TH_PlateIDResult½á¹¹ÌåÖеÄnCarModel;*/
/*        Return Value: int(ERR_Code)                                        */
/************************************************************************/
const char *  __stdcall TH_GetVehicleModelName(int nModel);
 
/************************************************************************/
/* TH_SetEnableLeanCorrection: ÉèÖÃÊÇ·ñ´ò¿ªÇãбУÕý                                */
/*        Parameters:                                                        */
/*            bLeanCorrection[in]: true:´ò¿ªÇãбУÕý;                                */
/*                                 false:¹Ø±ÕÇãбУÕý                    */
/*        Return Value: int(ERR_Code)                                        */
/************************************************************************/
int __stdcall TH_SetEnableLeanCorrection( unsigned char bLeanCorrection, TH_PlateIDCfg *pPlateCfg);
 
/************************************************************************/
/* TH_SetEnableShadow: ÉèÖÃÊÇ·ñ´ò¿ªÒõÑôÅÆÊ¶±ð                                */
/*        Parameters:                                                        */
/*            bShadow[in]: true:´ò¿ªÒõÑôÅÆ;                                */
/*                         false:¹Ø±ÕÒõÑôÅÆ                    */
/*        Return Value: int(ERR_Code)                                        */
/************************************************************************/
int __stdcall TH_SetEnableShadow( unsigned char bShadow, TH_PlateIDCfg *pPlateCfg);
 
/************************************************************************/
/* TH_GetLicenseNum: »ñÈ¡ÍøÂç¼ÓÃÜËøÐí¿ÉÊýÁ¿                                */
/*        Parameters:                                                        */
/*            pnTotalNum[out]:    Ðí¿É×ÜÊý;                                */
/*            pnRemainingNum1[out]:    ·þÎñÆ÷һʣÓàÐí¿ÉÊý                    */
/*            pnRemainingNum2[out]:    ·þÎñÆ÷¶þÊ£ÓàÐí¿ÉÊý                    */
/*        Return Value: int(ERR_Code)                                        */
/************************************************************************/
int __stdcall TH_GetLicenseNum(int *pnTotalNum, int *pnRemainingNum1, int *pnRemainingNum2);
 
/************************************************************************/
/* TH_SetServer:                                */
/*        Parameters:                                                        */
/*            pServer1[in]: server 1 : 192.168.0.10                                */
/*            pServer2[in]: server 2 : 192.168.0.11                */
/*                                */
/*        Return Value: int(ERR_Code)                                        */
/************************************************************************/
int __stdcall TH_SetServer(const char *pServer1, const char *pServer2);
 
int __stdcall TH_SetSoPath(char *pSoPath);
 
#ifdef __cplusplus
}
#endif
 
#endif    //    __TH_PLATEID_H_INCLUDE__