Back to Adaptive Vision Library website

You are here: Start » Function Reference » Barcodes » RecognizeBarcode

RecognizeBarcode


Extracts information from a barcode located on the input image at a given position.

Syntax

C++
C#
 
void avl::RecognizeBarcode
(
	const avl::Image& inImage,
	const avl::Rectangle2D& inBarcodePosition,
	atl::Optional<const avl::CoordinateSystem2D&> inBarcodePositionAlignment,
	atl::Optional<avl::BarcodeFormat::Type> inBarcodeFormat,
	const int inScanCount,
	const int inScanWidth,
	const float inMinStrength,
	const float inSmoothingStdDev,
	atl::Conditional<atl::String>& outDecodedText,
	atl::Conditional<avl::BarcodeFormat::Type>& outBarcodeFormat,
	avl::Rectangle2D& outAlignedBarcodePosition,
	atl::Array<avl::Segment2D>& diagScheduledScanSegments
)

Parameters

Name Type Range Default Description
inImage const Image& Input image
inBarcodePosition const Rectangle2D& Position of the input image in which the barcode is located
inBarcodePositionAlignment Optional<const CoordinateSystem2D&> NIL Adjusts the barcode rectangle to the position of the inspected object
inBarcodeFormat Optional<BarcodeFormat::Type> EAN13 Format of the barcode
inScanCount const int 1 - 5 Number of parallel scans run until first successful read
inScanWidth const int 1 - 5 Width of the single scan
inMinStrength const float 0.0 - 5.0f Minimal strength of an extracted edge
inSmoothingStdDev const float 0.0 - 0.25f Standard deviation of the gaussian smoothing applied to the profile extracted in each scan
outDecodedText Conditional<String>& Decoded barcode text or nothing if all of the scans failed
outBarcodeFormat Conditional<BarcodeFormat::Type>& Decoded barcode format or nothing if all of the scans failed
outAlignedBarcodePosition Rectangle2D&
diagScheduledScanSegments Array<Segment2D>& Scheduled scan segments

Hints

  • Connect inImage with the output of your image acquisition filter.
  • Select inBarcodeFormat according to the type of codes you want to read. If you choose the wrong format, the codes will not be recognized. Setting its value to Auto can increase the computation time considerably. Furthermore, the Auto value causes detection of UPC-A codes as EAN-13 codes.

Examples

Rotated barcode.

Low quality barcode printed on plastic foil.

Barcode on package wrapped in plastic foil.

Barcode on blurry image.

Barcode on standard 330ml can.

Barcode on reflective and wrapped surface.

EAN-13 with add-on 2 used to indicate a book edition.

EAN-13 with add-on 5 to give a suggestion for the price.

Remarks

Minimal bar width requirement

To provide precise detection of the barcode width of the thinnest bar should be at least 1.5 pixels.

Depending on the barcode format guard or start/end code patterns must be readable.

Pharmacode usage

The pharmacode barcode type can be read correctly in both directions. To get results from both directions use a Pharmacode and PharmacodeInversed barcode types.

Before decoding a Pharmacode the code orientation angle is normalized to a range from -45° to 135° what makes the code decoding more stable

Results of reading using a different Pharmacode directions: Pharmacode = 23 and PharmacodeInversed = 16.

Using a relative coordinate systems

For more information about local coordinate systems please refer to the following article.

See Also