| Table of Contents / Identification / Bar Code | Operators |
find_bar_code — Detect and read bar code symbols in an image.
find_bar_code(Image : SymbolRegions : BarCodeHandle, CodeType : DecodedDataStrings)
The operator find_bar_code finds and reads bar code symbols in a given image (Image) and returns the decoded data. In one image an arbitrary number of bar codes of a single type can be read. The type of the desired bar code symbology is given by CodeType. The decoded strings are returned in DecodedDataStrings and the corresponding bar code regions in SymbolRegions. For a total of n successfully read bar codes, the indices from 0 to (n-1) can be used as candidate handle in the operators get_bar_code_object and get_bar_code_result in order to retrieve the desired data of one specific bar code result.
Before calling find_bar_code a bar code model must be created by calling create_bar_code_model. This operator returns a bar code model BarCodeHandle, which is input to find_bar_code.
The output value DecodedDataStrings contains the decoded string of the symbol for each bar code result. The contents of the strings are conform to the appropriate standard of the symbology. Typically, DecodedDataStrings contains only data characters. For bar codes with a mandatory check character the check character is not included in the string. For bar codes with a facultative check character, like for example Code 39, Codabar, 2/5 Industrial or 2/5 Interleaved, the result depends on the value of the 'check_char' parameter, which can be set in create_bar_code_model, set_bar_code_param or set_bar_code_param_specific. By default 'check_char' is 'absent' and the check character is interpreted as a normal data character and hence included in the decoded string. When 'check_char' is set to 'present' the correctness of the check character is primarily tested. If the check character is correct the decoded string contains just the data characters; if the check character is not correct the bar code is graded as unreadable. Accordingly, the symbol region and the decoded string do not appear in the list of resulting strings (DecodedDataStrings) and in the list of resulting regions (SymbolRegions).
The underlying decoded reference data, including start/stop and check characters, can be queried by using the get_bar_code_result operator with the option 'decoded_reference'.
Following bar code symbologies are supported:
2/5 Industrial EAN-8 RSS-14
2/5 Interleaved EAN-8 Add-On 2 RSS-14 Truncated
Codabar EAN-8 Add-On 5 RSS-14 Stacked
Code 39 EAN-13 RSS-14 Stacked Omnidirectional
Code 93 EAN-13 Add-On 2 RSS Limited
Code 128 EAN-13 Add-On 5 RSS Expanded
MSI UPC-A RSS Expanded Stacked
PharmaCode UPC-A Add-On 2
UPC-A Add-On 5
UPC-E
UPC-E Add-On 2
UPC-E Add-On 5
Note, that the PharmaCode can be read in forward and backward direction, both yielding a valid result. Therefore, both strings are returned and concatenated into a single string in DecodedDataStrings by a separating comma.
Autodiscrimination
Autodiscrimination describes the simultaneous decoding of multiple bar code types in one call of find_bar_code. For this purpose a tuple of bar code types is specified for the parameter CodeType. Using the generic value 'auto' all known bar code types are decoded - except 'PharmaCode' and 'MSI' because these codes don't have enough features to be reliably separated from other bar code types. The tuple can also contain bar code types with the tilde prefix (~) which won't be decoded. For example
['auto', '~EAN-8', '~EAN-8 Add-On 2', '~EAN-8 Add-On 5']
describes all bar code types without 'PharmaCode', 'MSI' and all kinds of 'EAN-8'. Please note that each additionally allowed bar code type increases the run-time of the operator. Using too many bar code types the reliability of the decoding could decrease because not all bar code types can be discriminated reliably. To improve autodiscrimination compatibility bar codes with a check character or check sum should be used.
The bar code reader tries to decode the bar code types in the following order:
RSS-14, RSS-14 Truncated, RSS-14 Stacked,RSS-14 Stacked Omnidirectional, RSS Limited, RSS Expanded, RSS Expanded Stacked, Code 128, EAN-13 Add-On 5, EAN-13 Add-On 2, EAN-13, UPC-A Add-On 5, UPC-A Add-On 2, UPC-A, EAN-8 Add-On 5, EAN-8 Add-On 2, EAN-8, UPC-E Add-On 5, UPC-E Add-On 2, UPC-E, Code 93, Code 39, Codabar, 2/5 Interleaved, 2/5 Industrial.
Therefore you should exclude at least all definitely not occuring bar code types that are scanned before the first of the bar code types you expect to find or, better, just scan for the explicit list of bar code types you expect.
Especially for the autodiscrimination there is the operator set_bar_code_param_specific. With it some parameters of the bar code model can be set specifically for certain bar code types.
Training
If the bar code reader is in training mode, the operator find_bar_code executes a training cycle. The training mode is described with the operator set_bar_code_param.
A bar code model 'BarCodeHandle' cannot be shared between two or more user's threads. Different bar code models can be used independently and safely in different threads.
Input image.
Regions of the successfully decoded bar code symbols.
Handle of the bar code model.
Type of the searched bar code.
Default value: 'EAN-13'
List of values: '2/5 Industrial', '2/5 Interleaved', 'Codabar', 'Code 39', 'Code 93', 'Code 128', 'EAN-13', 'EAN-13 Add-On 2', 'EAN-13 Add-On 5', 'EAN-8', 'EAN-8 Add-On 2', 'EAN-8 Add-On 5', 'UPC-A', 'UPC-A Add-On 2', 'UPC-A Add-On 5', 'UPC-E', 'UPC-E Add-On 2', 'UPC-E Add-On 5', 'MSI', 'PharmaCode', 'RSS-14', 'RSS-14 Truncated', 'RSS-14 Stacked', 'RSS-14 Stacked Omnidir', 'RSS Limited', 'RSS Expanded', 'RSS Expanded Stacked', 'auto'
Data strings of all successfully decoded bar codes.
The operator find_bar_code returns the value 2 (H_MSG_TRUE) if the given parameters are correct. Otherwise, an exception will be raised.
create_bar_code_model, set_bar_code_param
get_bar_code_result, get_bar_code_object, clear_bar_code_model
Bar Code
| Table of Contents / Identification / Bar Code | Operators |
| HALCON Reference Manual 10.0.2 | Copyright © 1996-2011 MVTec Software GmbH |