Back to Aurora Vision Library website

You are here: Start » Function Reference » Computer Vision » Datacodes » ReadMultipleQRCodes

ReadMultipleQRCodes


Header: AVL.h
Namespace: avl
Module: Datacodes

Detects and recognizes all QR codes on the input image.

Syntax

C++
C#
 
void avl::ReadMultipleQRCodes
(
	const avl::Image& inImage,
	atl::Optional<const avl::Rectangle2D&> inRoi,
	atl::Optional<const avl::CoordinateSystem2D&> inRoiAlignment,
	int inMaxCodeCount,
	float inMinModuleSize,
	float inMaxModuleSize,
	atl::Optional<float> inContrastThreshold,
	atl::Optional<int> inPatternQuality,
	bool inAllowRotation,
	avl::Polarity::Type inPolarity,
	atl::Optional<float> inMinLineMagnitude,
	atl::Array<avl::QRCode>& outQRCodes,
	atl::Optional<avl::Rectangle2D&> outAlignedRoi = atl::NIL
)

Parameters

Name Type Range Default Description
Input value inImage const Image& Input image
Input value inRoi Optional<const Rectangle2D&> NIL Range of pixels to be processed
Input value inRoiAlignment Optional<const CoordinateSystem2D&> NIL Adjusts the region of interest to the position of the inspected object
Input value inMaxCodeCount int 1 - 255 2 Maximum number of codes in one image
Input value inMinModuleSize float 1.5 - 100.0 4.0f Lower estimated size of a code unit in pixels
Input value inMaxModuleSize float 1.5 - 100.0 40.0f Upper estimated size of a code unit in pixels
Input value inContrastThreshold Optional<float> 1.0 - 255.0 NIL Guaranteed gray level difference between dark and bright modules
Input value inPatternQuality Optional<int> 1 - 3 NIL Quality of the code from 1 (extremely deformed) to 3 (perfect)
Input value inAllowRotation bool True Allows codes rotated in relation to the axes of the input image
Input value inPolarity Polarity::Type Any Specifies whether code is darker or brighter than the background
Input value inMinLineMagnitude Optional<float> 1.0 - 255.0 NIL Strength of an edge within the code; default depends on parameters
Output value outQRCodes Array<QRCode>&
Output value outAlignedRoi Optional<Rectangle2D&> NIL Input ROI after transformation (in the image coordinates)

Optional Outputs

The computation of following outputs can be switched off by passing value atl::NIL to these parameters: outAlignedRoi.

Read more about Optional Outputs.

Description

The filter locates and decodes QR code on the image (inImage) within given region (inRoi). The encoded text length must be greater than 2.

inMinModuleSize is the expected lower bound of one module (smallest unit of the code). If there are multiple codes, size of the smallest one should be provided.

inMinModuleSize is the expected upper bound of one module (smallest unit of the code). If there are multiple codes, size of the smallest one should be provided.

Parameter inMaxCodeCount determines how many codes are to be found within the image. Thus the algorithm continues searching until it reaches the desired number of codes or has nowhere to search. Too high value can significantly extend the filter execution time.

Parameter inContrastThreshold describes contrast of the code - namely, it denotes the brightness difference between light and dark modules of the code. If not given, the algorithm uses normalization of the image to enhance the code and computes this value automatically.

inPatternQuality is an integer from the range <1,3> describing how much the code is blurred or the positional patterns are deformed. For instance, value 3 corresponds to a perfect quality code, while value 1 to an extremely blurred one. For standard cases it is recommended to use quality of 2 or to leave it default.

inAllowRotation Allows codes rotated in relation to the axes of the input image.

inPolarity Setup polarity of QR code can improve performance of ReadingQRCodes

inMinLineMagnitude describes strength of an edge within the code. This value determined automatically is usually correct, so this parameter can be viewed as a hint for the algorithm in nonstandard, tough cases.

Examples

Simple case.

Dark and lower quality code.

Multiple codes within one image.

Code viewed from an angle.

Remarks

To be correctly detected, the code should have safety area around it (of same brightness as the code background color) at least as wide as its unit. Moreover, unit size should be at least 2 pixels.

See Also

  • ReadSingleQRCode – Detects and recognizes a single QR code on the input image.