Configuration of CARRIDA

Copyright:1996-2022 Carrida Technologies GmbH, Ettlingen, Germany
Author:Carrida Support

Home page

Table of Contents

1   Introduction

The way lprcarrida functions and operates is defined with the help of a configuration file which is stored in standard INI file format. This configuration file is loaded upon LPR object creation. Its path needs to be provided to the C++ object constructor in respect to the C initialization function.

The lprcarrida configuration file collects all parameters which are necessary to control the ANPR process. The configuration file is being opened read-only, hence one can use the same file for several program instances simultaneously.

Here is a small example of an ini-file content.


Mode = parking


Mode = standard
Classifier = data/usa.dat

There are two main categories of parameters - stream related (ANPR_STREAM section) and single image related (ANPR_ENGINE section). The next two sections describe these categories in detail.

2   Stream parameters

Stream parameters are related to the handling of the video streams - i.e., situations where a number plate is visible in more than one successive frames. Mostly, this concerns the way how multiple license plate readings are merged into one reading result per vehicle. Besides, multi-threading parameters, as well as some general image preprocessing parameters can be set here. Stream parameters are located in the ANPR_STREAM section of the ini-file.

There are several streaming modes available that set individual parameters to the predefined values, as shown in (1). The mode can be optionally defined by setting the ANPR_STREAM / Mode parameter to one of the following values.

Streaming modes
Name Description
single This is the default mode. Streaming parameters are configured in such a way that the video handling functionality is switched off - i.e. each input image is considered to be not related to adjacent images
parking This mode is designed for access and parking control systems. Each vehicle number plate is required to be detected at least three times. The output result is available immediately afterwards.
offline In this mode, reading results are getting available with a delay about 25 frames. The reading quality is the best in this mode as the engine has more frames to analyse before producing results. It is not suited for real-time applications where any delay is unwanted. The main purpose of offline mode is to process video files.
freeflow This mode is designed for freeflow real-time systems. It is configured in such a way that it tries to catch all passing vehicles. The results may become available with a delay of up to 15 frames.
Parameters default values depending on a streaming mode
Parameter/Preset single parking offline freeflow
MinReadings 1 3 3 2
StreamBufferLength 1 1 20 1
DropAfterFrames 0 15 25 15
DropAfterMs 0 1300 1700 1000
BorderWidthRelative 0.0 1.5 1.5 1.5
BorderHeightRelative 0.0 1.0 1.0 1.0
MaxStringMatchingDistance 0 1 1 1
BlockingMode true false true false

Generally, when the streaming mode is defined, streaming parameters are set to the predefined meaningful values. Besides, each individual parameter can be set explicit (thus overriding its default value). Each parameter is described in the following table in detail.

Stream parameters
Name Description Type Default
Multiple reading handling parameters
Streaming mode as described above. Possible values are:
- single (0)
- parking (1)
- offline (2)
- freeflow (3)
string or
A minimal number of required readings per vehicle before its license plate will be produced to the output. This parameter can be used to suppress occasional wrong readings.
Readings for the last three successive frames: ABC123 x ABC123
(x means there were no reading results for the corresponding frame)
If MinReadings = 1: Output will be produced (ABC123)
if MinReadings = 3: Not enough readings, output will not be produced (license plate will be suppressed).
integer 1
If set > 1, results will be available with a delay - the number of delayed frames is equal to the StreamBufferLength - 1. The advantage in this case is that the engine has more frames to analyse before producing the output results - this allows correcting possible reading errors by merging multiple readings results. A good strategy is to set this parameter to a lower value for real-time applications where any delay is critical, and to increase this parameter for offline applications.
Readings for the last three successive frames: ABC12 ABC123 ABC123
In this example, the first reading result contains an error, while the successive two are correct. If StreamBufferLength = 1, the result will be returned immediately - for the frame 1 the output string will be ABC12. But if StreamBufferLength = 3, the engine analyses readings for all 3 frames first, merges multiple readings afterwards, and returns the right output value ABC123 for the frame 1.
integer 1
Ideally, a license plate should be detected in each frame during which a vehicle moves across the video scene. In practice, however, there can be some time (frame) gaps in readings. DropAfterFrames parameter specifies the max allowed gap in frames to keep license plate strings in the processing history. After reaching this gap, the vehicle with the relevant license plate string is removed from the memory; new readings would trigger new detections. In contrast to the StreamBufferLength, this parameter does not produce a delay in results and can safely be set to higher values.
Readings for the last seven successive frames: ABC123 x ABC123 x x x ABC123
If DropAfterFrames = 5, the single result will be produced. But if e.g. DropAfterFrames = 2, two reading results will be produced, as there is a gap of three frames without any reading results.
integer 0
Similar to the DropAfterFrames parameter - the only difference is that measurement unit is milliseconds instead of number of frames.
Example: If DropAfterMs = 1300, the license plate will be removed from the memory once it cannot be detected during at least 1.3 seconds.
integer 0
NOTE: This parameter is designed mainly for the usage in Carrida Camera.
By default, each license plate will trigger reading result only once - as soon as it is detected for the first time. All successive readings of the same plate will not produce a new result. Setting this parameter to a positive value allows to change this logic so that the license plate will send a reading result repeatedly as long as it can be read. This can be useful to verify if the car is still visible - for example, if it is waiting for an access to the parking area.
Example: If ResetAfterMs = 2000, each license plate will send a new reading result every two seconds before it leaves the reading area.
integer 0
The purpose of these parameters is to filter (reject) license plates that are located too close to the image borders - in such cases there is a danger that a license plate is not fully visible. These parameters are relative to the average plate characters height. For example, if there is a plate detected with 20 pixels high characters in average, and the BorderWidthRelative is set to 1.5, there must be at least 30 pixels distance from both left and right image borders to the license plate bounding box to accept this reading.
Max Levenstein distance (number of character deletions + insertions + replacements to transform one string into another) between two ANPR reading results achieved in two different frames that is used for decision if these readings belong to the same vehicle or not. Setting this parameter to a higher value increases tolerance of the system to the reading errors. Normally, there is no need to change this parameter.
Readings for the last three successive frames: ABC123 A8C12 ABC123
If MaxStringMatchingDistance = 2, single result is produced (ABC123). If MaxStringMatchingDistance = 1, two outputs are produced (ABC123 and A8C12), as there are 2 operations needed to transform ABC123 into A8C12.
integer 1
Multi-threading parameters
Number of CARRIDA threads that will be run parallelly. If set to zero, the actual number of hardware cores will be taken - thus, the processing time will be optimal. This parameter is intended to optimize the overall processing time of an input stream.
NOTE: Upper value is limited depending on the installed license (4 for default license setup)
integer 1
BlockingMode If set to true, each coming frame is guaranteed to be processed. Thus, if the images queues for all CARRIDA instances are full, the engine will be blocked until one of the queues is able to accept a new image. If BlockingMode = false, an input image will be rejected from the processing in case all queues are full. A good strategy is to set BlockingMode to false for live streams and to set it to true for processing of e.g. offline videos or image folders. boolean true
SortResults Images with reading results are coming in the same order as they were given to Carrida. If, instead, the results have to be delivered as soon as they get available, this parameter can be set to "false". boolean true
Preprocessing parameters
If set, input images will be rotated before any processing begins. All further CARRIDA parameters are related to the rotated images. Output images will be rotated as well, and the license plate coordinates will be also related to the rotated images.
Possible values are:
0 (none) No rotation
1 (right) Rotate image 90 grad clockwise
2 (left) Rotate image 90 grad counterclockwise
3 (180 grad) Rotate image 180 grad (flip it both horizontally and vertically)
4 (flip_hor) Flip image horizontally
5 (flip_ver) Flip image vertically
integer 0
FineRotation Optionally, successive (after applying of Rotation) image fine rotation in grad. Settings this parameter does not change image resolution. integer 0
Here, you can specify processor affinities for each Carrida instance (see NumberOfEngines). The CPU affinites for each instance are to be split by semicolon. For example, if NumberOfEngines = 2 and you want to assign CPU #0 to the first one and CPU #1 to the second one, the string will be 0;1
There is a possibility to assign more than one CPU to each instance. In this case, CPU id's can be specified using either commas for a list or with a help of dashes for a range. Here are some examples:
ProcessorsToUse = 0-3;4;6,7
Here we assign CPU's 0 to 3 to the first engine, CPU #4 to the second one and CPU #6, #7 to the third one
ProcessorsToUse = 0-1;0-1
Here we have two engines, and both of them can use CPU #0, #1
ProcessorsToUse = 0
Here we have only one engine and it can use only CPU #0
NOTE: Number of engines and number of affinities must be equal, otherwise affinities will not be set.

The figure below visualises meaning of BorderWidthRelative and BorderHeightRelative parameters. All license plates that are too close to the ROI border will be discarded. This prevents reading of plates that are not fully visible.


Meaning of BorderWidthRelative and BorderHeightRelative parameters

3   Engine parameters

Engine parameters are related to the license plate recognition functionality, based on a single input image. The parameters are located inside of the ANPR_ENGINE section of the ini-file. The parameters provided in the lprcarrida configuration file are generally a very good starting point for the ANPR engine and usually do not need to be modified, even for varying camera viewpoints and/or changing illumination conditions.

3.1   Configuration modes

The CARRIDA ANPR engine can operate in several performance modes, which differ in recognition speed and reading accuracy. Set the lprcarrida mode using the configuration file as described below.

The supported modes are:

  • fastest
  • fast
  • standard
  • high
  • best

The performance setting is used to select between the fastest possible operation (fastest) and the best recognition quality (best).

The high mode is about twice as slow compared to the fast mode (e.g. from 50 ms to 100 ms), the reading accuracy of the high mode is typically 3-4% better than in fast mode. The best mode is available for some regions, currently USA, Europe and Australia.

Note: The standard mode is a good compromise between speed and accuracy.

A new setup of lprcarrida typically involves only the following parameters:

  • Engine performance mode
  • Classifier (the location of the OCR engine data)
  • MinLetterHeight
  • MaxLetterHeight
  • MinPlateConfidence

3.2   Description of the individual engine parameters

Configuration modes can be seen as presets - they set CARRIDA parameters to predefined default values. Additionally, each individual parameter can be explicitly set in the configuration file. The table below describes each CARRIDA parameter in detail.

Engine parameters
Name Description Type Default
Image preprocessing
If these parameters are present, the input image will be scaled by the given ratios before processing. This procedure is useful if the license plates are visually distorted due to a non-optimal camera viewing point (especially for steep top views).
The resizing values have to be provided in percent of the original size (100 = original size).
ScaleHeight = 120 scales the image vertically by 20% before any processing is done.
Deinterlace If true, de-interlacing will be applied to the input image before further processing. boolean false
Masking parameters
Following three parameters describe possibilities to set image masking areas - i.e. areas which have to be excluded from ANPR processing. Arbitrary combination of these parameters can be used - if several mask types are specified, logical AND operation of the masking images will be performed intern.
Border This is a trimming parameter - it defines the number of pixels that will be trimmed from each image side. It must contain 4 values, specifying trimming values from the left, top, right, and bottom image side respectively. The main purpose is to cut image areas with timestamps overlays that are often present in an input stream.
0 0 0 0
This parameter gives the possibility of defining an arbitrary number of masking polygons - the processing will happen only inside of these polygons. The format is following:
img_width img_height Num_p(N) Num_p1(M) p_1_1.x p_1_1.y p_1_2.x p_1_2.y ... p_1_m.x p_1_m.y p_2_m.x p_2_m.y ... p_n_m.y
Here, N - is number of polygons, and M is number of points in the next polygon
Path (absolute or relative) to the binary (grayscale) masking image. The processing will be performed only for pixels that have non-zero values in a mask image.
Note: resolution of the mask image must be the same as the resolution of each input image, otherwise an exception will be thrown.
string -
Here, configuration preset can be chosen. Four options are available:
1. freeflow (1) - fastest mode
2. fast (2) - fast processing time will be preferred
3. standard (3) - a trade-off between quality and processing time
4. high (4) - reading quality will be preferred
5. best (5) - the best available quality, available for some regions
string or
The number of CPU cores that will be used for processing of each single frame. Non-positive value means all available cores have to be used.
This parameter is intended (in contrast to the NumberOfEngines parameter) for the fastest possible processing time of an individial image.
Note: upper value is limited depending on the installed license (4 for default license setup)
integer 0
Path to the region file. This is the only parameter which must be provided in order to run the detection process. All other parameters are optional.
Note: classifier path can be either absolute or relative to the ini file path.
string -
ANPR parameters
Minimum and maximum character height in pixels. Setting MinLetterHeight to lower values (less than 14 pixels) can lead to increased processing time. The minimal character height that Carrida can reliably handle is about 8 pixels, assuming that image quality is satisfying (good contrast, no big compression artifacts). For the upper character height, there is no limit for the engine. Note, however, that the engine is tuned by default to handle license plates with low resolution (with individual characters being 15-30 pixels high). integer
MinPlateConfidence Minimum confidence value for each license plate to be accepted. Range is [0..100]. integer 40
MaxPlateAngle Max allowed plate angle in grad integer (2)
SearchInverted If set to 1, white-on-black (inverted) plates will be also searched in the case if no black-on-white plates are found, resulting in a slightly slower processing time. If set to 2, inverted plates will always be searched - even if usual black-on-white plates are found. Using this mode will increase processing time.
0 = none
1 = search
2 = always
1 (in some states 2)
EnhancedDetection If set, then in case if no license plates are detected, additional algorithms will be applied to find a plate. Default value is true for "single" streaming mode, and false for all other modes. Note: setting this parameter slows down the processing frame rate. boolean stream mode dependend
MaxPlates Maximum number of license plates that the engine returns per image. E.g., if MaxPlates is equal 2, there will be at most 2 plates (with the highest confidences) per image returned. integer unlimited
Filter number plates that consist either of only digits or only letters respectively.
FilterNonPlates If set, ANPR readings that are most likely not license plates (advertisements etc.) will be filtered out. boolean false
If set to 1, image noise will be filtered before the whole ANPR process begins. Using this parameter can significantly improve runtime performance for noisy images.
Note: Setting this parameter to 1 for images that do not have much noise can increase processing time
If set to 2, engine decides automatically if noise filtering is needed.
0 = off
1 = on
2 = auto
MinContrast Min contrast to differentiate foreground (characters) from the background (license plate itself). Reducing this parameter increases both reading performance and processing time. integer (2)
Calculate exact license plate position. Enabling this option increases processing time. At the same time, reading performance will be slightly better.
Note: This option is available for some region files.
(if available)
State classification parameters
StateRecognition Setting this parameter to false switches off the state recognition process for classifiers with state recognition functionality. The processing time will be faster, but the reading performance will be slightly worse at the same time. boolean true
Optionally, list of countries/states/provinces that have to be included/excluded in the state recognition process.
1) States = DE FR AT
2) IgnoreStates = NL PL
In the first example, all plates are forced to belong either to Germany, France, or Austria. In the second example, Netherlands and Poland are excluded from the state recognition process - i.e. output plates can not belong to these states.
Note: The parameters States and IgnoreStates are mutually exclusive. For the list of all state abbreviations please refer to (3).
MainStates If defined, specified states as well as their neighbours will be given higher priority when doing state recognition.    
AnalyseStateAreas If set, areas around license plate text will be additionally analysed during the state recognition process. This parameter should be switch off in cases where those areas are not visible - for example, because of infrared lighting. This functionality is currently implemented for USA and Canada. boolean true
Advanced ANPR parameters
Following parameters can be additionally configured but this is not needed normally
Minimum and maximum number of characters needed for a plate to be accepted in the output list. License plates with a character count smaller or bigger than these thresholds will be ignored.
Best results will be realized by selecting a value in the range of [3 .. 9]
Depends on
OneRowOnly If set to true, plates consisting of two rows will be ignored. The processing time will be faster. boolean
Depends on
If switched on, the eingine will consume less memory. This can be useful for embedded devices with limited hardware recources. The processing speed will be by about 10% slower.
Note: This parameter will has effect only if state recognition is available (e.g. Europe, USA, Australia).
boolean false
Parameters default values depending on a configuration mode
Parameter/Preset fastest fast standard high best
MaxPlateAngle 15 15 20 25 25
MinContrast 50 50 50 12 12
FilterNoise 2 2 2 2 1
Countries/States abbreviations
Abbreviation State
AD Andorra
AE United Arab Emirates
AE/AJ United Arab Emirates - Ajman
AE/AZ United Arab Emirates - Abu Dhabi
AE/DU United Arab Emirates - Dubai
AE/FU United Arab Emirates - Al Fujayrah
AE/RK United Arab Emirates - Ra's al Khaymah
AE/SH United Arab Emirates - Ash Shariqah
AE/UQ United Arab Emirates - Umm al Qaywayn
AL Albania
AM Armenia
AO Angola
AR Argentina
AT Austria
AU Australia
AU/ACT Australia - Australian Capital Territory
AU/NSW Australia - New South Wales
AU/NT Australia - Norther Territories
AU/QLD Australia - Queensland
AU/SA Australia - South Australia
AU/TAS Australia - Tasmania
AU/VIC Australia - Victoria
AU/WA Australia - Western Australia
AZ Azerbaijan
BA Bosnia and Herzegovina
BB Barbados
BD Bangladesh
BE Belgium
BG Bulgaria
BH Bahrain
BJ Benin
BM Bermuda
BN Brunei Darussalam
BO Bolivia, Plurinational State of
BR Brazil
BT Bhutan
BW Botswana
BY Belarus
BZ Belize
CA Canada
CA/AB Canada - Alberta
CA/BC Canada - British Columbia
CA/GOV Canada - Government
CA/MB Canada - Manitoba
CA/NB Canada - New Brunswick
CA/NL Canada - Newfoundland and Labrador
CA/NS Canada - Nova Scotia
CA/NT Canada - Northwest Territories
CA/NU Canada - Nunavut
CA/ON Canada - Ontario
CA/PE Canada - Prince Edward Island
CA/QC Canada - Quebec
CA/SK Canada - Saskatchewan
CA/YT Canada - Yukon Territory
CH Switzerland
CL Chile
CN China
CO Colombia
CR Costa Rica
CU Cuba
CY Cyprus
CZ Czech Republic
DE Germany
DK Denmark
DZ Algeria
EC Ecuador
EE Estonia
EG Egypt
ES Spain
FI Finland
FR France
GB United Kingdom
GE Georgia
GI Gibraltar
GR Greece
GT Guatemala
HK Hong Kong
HN Honduras
HR Croatia
HU Hungary
ID Indonesia
IE Ireland
IL Israel
IN India
IQ Iraq
IR Iran, Islamic Republic of
IS Iceland
IT Italy
JM Jamaica
JO Jordan
JP Japan
KE Kenya
KG Kyrgyzstan
KH Cambodia
KR Korea, Republic of
KW Kuwait
KZ Kazakhstan
LB Lebanon
LI Liechtenstein
LK Sri Lanka
LR Liberia
LS Lesotho
LT Lithuania
LU Luxembourg
LV Latvia
LY Libya
MA Morocco
MC Monaco
MD Moldova
ME Montenegro
MG Madagascar
MK Macedonia
MM Myanmar
MN Mongolia
MO Macao
MT Malta
MW Malawi
MX Mexico
MY Malaysia
NA Namibia
NG Nigeria
NI Nicaragua
NL Netherlands
NO Norway
NP Nepal
NZ New Zealand
None None
OM Oman
PA Panama
PE Peru
PH Philippines
PK Pakistan
PL Poland
PR Puerto Rico
PT Portugal
PY Paraguay
QA Qatar
RO Romania
RS Serbia
RU Russian Federation
SA Saudi Arabia
SE Sweden
SG Singapore
SI Slovenia
SK Slovakia
SM San Marino
SV El Salvador
SY Syrian Arab Republic
SZ Swaziland
TH Thailand
TH/ACR Thailand - Amnatcharoen
TH/ATG Thailand - Ang Thong
TH/AYA Thailand - Phra Nakhon Si Ayutthaya
TH/BKK Thailand - Bangkok
TH/BKN Thailand - Bueng Kan
TH/BRM Thailand - Buriram
TH/CBI Thailand - Chon Buri
TH/CCO Thailand - Chachoengsao
TH/CMI Thailand - Chiang Mai
TH/CNT Thailand - Chainat
TH/CPM Thailand - Chaiyaphum
TH/CPN Thailand - Chumphon
TH/CRI Thailand - Chiang Rai
TH/CTI Thailand - Chanthaburi
TH/KBI Thailand - Krabi
TH/KKN Thailand - Khon Kaen
TH/KPT Thailand - Kamphaeng Phet
TH/KRI Thailand - Kanchanaburi
TH/KSN Thailand - Kalasin
TH/LEI Thailand - Loei
TH/LPG Thailand - Lampang
TH/LPN Thailand - Lamphun
TH/LRI Thailand - Lop Buri
TH/MDH Thailand - Mukdahan
TH/MKM Thailand - Maha Sarakham
TH/MSN Thailand - Mae Hong Son
TH/NAN Thailand - Nan
TH/NBI Thailand - Nonthaburi
TH/NBP Thailand - Nongbualumphu
TH/NKI Thailand - Nong Khai
TH/NMA Thailand - Nakhon Ratchasima
TH/NPM Thailand - Nakhon Phanom
TH/NPT Thailand - Nakhon Pathom
TH/NRT Thailand - Nakhon Si Thammarat
TH/NSN Thailand - Nakhon Sawan
TH/NWT Thailand - Narathiwat
TH/NYK Thailand - Nakhon Nayok
TH/PBI Thailand - Phetchaburi
TH/PCT Thailand - Pchichit
TH/PKN Thailand - Prachuap Khiri Khan
TH/PKT Thailand - Phuket
TH/PLG Thailand - Phatthalung
TH/PLK Thailand - Phitsanulok
TH/PNA Thailand - Phangnga
TH/PNB Thailand - Phetchabun
TH/PRE Thailand - Phrae
TH/PRI Thailand - Prachin Buri
TH/PTE Thailand - Pathum Thani
TH/PTN Thailand - Pattani
TH/PYO Thailand - Phayao
TH/RBR Thailand - Ratchaburi
TH/RET Thailand - Roi Et
TH/RNG Thailand - Ranong
TH/RYG Thailand - Rayong
TH/SBR Thailand - Sing Buri
TH/SKA Thailand - Songkhla
TH/SKM Thailand - Samut Songhram
TH/SKN Thailand - Samut Sakorn
TH/SKW Thailand - Sa Keo
TH/SNI Thailand - Surat Thani
TH/SNK Thailand - Sakon Nakhon
TH/SPB Thailand - Suphan Buri
TH/SPK Thailand - Samut Prakan
TH/SRI Thailand - Sara Buri
TH/SRN Thailand - Surin
TH/SSK Thailand - Sisaket
TH/STI Thailand - Sukhothai
TH/STN Thailand - Satun
TH/TAK Thailand - Tak
TH/TRG Thailand - Trang
TH/TRT Thailand - Trat
TH/UBN Thailand - Ubon Ratchathani
TH/UDN Thailand - Udon Thani
TH/UTD Thailand - Uttaradit
TH/UTI Thailand - Uthai Thani
TH/YLA Thailand - Yala
TH/YST Thailand - Yasothon
TJ Tajikistan
TM Turkmenistan
TN Tunisia
TR Turkey
TW Taiwan
UA Ukraine
UG Uganda
US United States
US/AK United States - Alaska
US/AL United States - Alabama
US/AR United States - Arkansas
US/AS United States - American Samoa
US/AZ United States - Arizona
US/CA United States - California
US/CO United States - Colorado
US/CT United States - Connecticut
US/DC United States - District of Columbia
US/DE United States - Delaware
US/FL United States - Florida
US/GA United States - Georgia
US/GOV United States - US Government
US/GU United States - Guam
US/HI United States - Hawaii
US/IA United States - Iowa
US/ID United States - Idaho
US/IL United States - Illinois
US/IN United States - Indiana
US/KS United States - Kansas
US/KY United States - Kentucky
US/LA United States - Louisiana
US/MA United States - Massachusetts
US/MD United States - Maryland
US/ME United States - Maine
US/MI United States - Michigan
US/MN United States - Minnesota
US/MO United States - Missouri
US/MP United States - Northern Mariana Islands
US/MS United States - Mississippi
US/MT United States - Montana
US/NC United States - North Carolina
US/ND United States - North Dakota
US/NE United States - Nebraska
US/NH United States - New Hampshire
US/NJ United States - New Jersey
US/NM United States - New Mexico
US/NV United States - Nevada
US/NY United States - New York
US/OH United States - Ohio
US/OK United States - Oklahoma
US/OR United States - Oregon
US/PA United States - Pennsylvania
US/PR United States - Puerto Rico
US/RI United States - Rhode Island
US/SC United States - South Carolina
US/SD United States - South Dakota
US/TN United States - Tennessee
US/TX United States - Texas
US/UM United States - United States Minor Outlying Islands
US/UT United States - Utah
US/VA United States - Virginia
US/VI United States - Virgin Islands
US/VT United States - Vermont
US/WA United States - Washington
US/WI United States - Wisconsin
US/WV United States - West Virginia
US/WY United States - Wyoming
UY Uruguay
UZ Uzbekistan
VA Vatican
VE Venezuela
VN Viet Nam
ZA South Africa

3.3   Logging functionality

In a case if any kind of exception, error or warning occurs, the engine will write down logging messages to a text file, including timestamp, error code and error description. By default, all logging messages will be written to the carrida.log file. The file can be at the most 1 Mb big. After that, it will be renamed into carrida.log.1 file and the new carrida.log file will be created. There can be maximal 10 logging files (carrida.log.1 .. carrida.log.9). After that, the oldest one will be removed - thus, the most recent logging information will be kept. There is an option to redefine individual logging parameters by specifying them in the ini file. The parameters described in the following table are to be set under [ANPR_ENGINE] section.

Logging parameters
Name Description Type Default
LoggingPath Path (absolute or relative) to the log file string carrida.log
Type of logging information to record, possible values are:
3 ... WARNING (log all warnings and higher)
4 ... ERROR (log all errors and higher)
5 ... FATAL (log only fatal messages - basically, this means that logging functionality is switched off)
integer 3
LoggingFileSize Maximal size of each logging file in bytes integer 1024 * 1024
LoggingNumberFiles Maximal number of logging files integer 10

4   License restriction

A standard license allows parallel running of one Carrida instance (one channel) that can use up to 4 CPU's. That means that the product of NumberOfEngines and NumberCores parameters is restricted to 4. Additionally, the NumberOfEngines parameter will be preferred as it leads to the better overall parallelisation. The following table demonstrates some configuration exmaples. Here is assumed that the user machine has 8 physical cores.

Configuration examples
Desired configuration Actual configuration Exlanation
NumberOfEngines = 1
NumberCores = 3
NumberOfEngines = 1
NumberCores = 3
Product of both parameters does not exceed 4, so they are set to the desired values.
NumberOfEngines = 3
NumberCores = 2
NumberOfEngines = 3
NumberCores = 1
The product exceeds 4 (3*2=6). So we set NumberOfEngines parameter first and reduce NumberCores parameter.
NumberOfEngines = 0
NumberCores = 0
NumberOfEngines = 4
NumberCores = 1
As in the previous example, we restrict NumberOfEngines to the max allowed value 4 (desired value would be 8, because there are 8 physical cores) and set NumberCores parameter to the max possible value so that the product of both does not exceed 4. Basically, this configuration guarants that the hardware resources will be utilized in the most effective way.

5   Vehicle type, make and model detection

Starting from the version 4.3.0, lprcarrida engine can additionally detect vehicle type, make and model (currently available for USA and Europe). There are two premises for this functionality:

  • object detection is allowed in your license;
  • you have a special region file supporting object detection

As for the vehicle type, following types are supported:

  • motorcycle;
  • car;
  • van;
  • truck;
  • bus;
  • camper

No further configuration is needed. The only relevant parameter is OperationMode under [MAKE_AND_MODEL] section.

Name Description Type Default
Operation mode:
1 ... ANPR only
2 ... Make & Model only
3 ... ANPR + Make & Model
4 ... Vehicle detection only
5 ... ANPR + Vehicle detection
integer 3

6   Plate finder mode

Carrida engine has an option to detect positions of all license plates within an image - without looking at their context like license plate text, origin country etc. This functionality must be supported by the classifier file. In the plate finder mode, all ini parameters except of the path to the classifier file will be ignored. The engine delivers following information for each found license plate:

  • Plate position within the image as rectangle coordinates;
  • cofidence value [0..100]
  • Invertion flag that indicates whether the plate contains dark characters on a bright background or vice versa.


The plate finder functionality is available through correspoding API calls which are described in the SDK documentation.