<a id="easyqrcode-reading-qr-codes"></a>

# EasyQRCode - Reading QR Codes

![EasyQRCode](assets/images/easyqrcode/home_illustration.webp)

<a id="easyqrcode2-pruprose"></a>

## Purpose of the **EasyQRCode** library

The **EasyQRCode** library allows reading QR codes in an image:

* The reading is fast and robust.
* Several codes can be read in the same image.
* The processing can be limited to an `ERegion` in the image.
* Specific support is provided for codes arranged in a grid.
* The QR codes can be graded according to the ISO 15415 or ISO 29158 standards.

<a id="easyqrcode-reading"></a>

## Reading a QR Code

You can read the QR code in an image automatically as follows:

* Create an [`EQRCodeReader`](../../../doxygen_cpp/classeVision_1_1EQRCodeReader.html) [<sub>.NET</sub>](../../../doxygen_cs/classeVision_1_1EQRCodeReader.html) [<sub>Python</sub>](../../../doxygen_python/classeVision_1_1EQRCodeReader.html) object.
* Call the [`EQRCodeReader::Read`](../../../doxygen_cpp/classeVision_1_1EQRCodeReader.html#aca78237d6203febd6221ed2e05cdc19b) [<sub>.NET</sub>](../../../doxygen_cs/classeVision_1_1EQRCodeReader.html#af3a09d6c336baba0d2d1f078f37c6877) [<sub>Python</sub>](../../../doxygen_python/classeVision_1_1EQRCodeReader.html#a98fbd0bb085de6d6d609875e6cc82ae4) method to return a vector of [`EQRCode`](../../../doxygen_cpp/classeVision_1_1EQRCode.html) [<sub>.NET</sub>](../../../doxygen_cs/classeVision_1_1EQRCode.html) [<sub>Python</sub>](../../../doxygen_python/classeVision_1_1EQRCode.html).
* Each instance contains, among others, the [`decoded string`](../../../doxygen_cpp/classeVision_1_1EQRCode.html#ae23a514a154d06ea9d9d12af88e10c49) [<sub>.NET</sub>](../../../doxygen_cs/classeVision_1_1EQRCode.html#a6f7a215ffa51a73b191db6882c081b55) [<sub>Python</sub>](../../../doxygen_python/classeVision_1_1EQRCode.html#aff5a05f073cfdab7850290355b4bbb0b) embedded in the QR code.

### C++

```cpp
#include <eVision/EasyQRCode/EQRCodeReader.h>
```

```cpp
using namespace eVision;

// Image constructor
EImageBW8 srcImage;

// QR code reader constructor
EQRCodeReader reader;

// ...

// Read
std::vector<EQRCode> qrCodes = reader.Read(srcImage);

// Retrieve the decoded string in best guess mode from the first QR Code
std::string decoded_string = qrCodes[0].GetDecodedString(EByteInterpretationMode_Auto);
```

### C#

```cs
using eVision;
```

```cs
// Image constructor
EImageBW8 srcImage = new EImageBW8();

// QR code reader constructor
EQRCodeReader reader = new EQRCodeReader();

// ...

// Read
EQRCode[] qrCodes = reader.Read(srcImage);

// Retrieve the decoded string in best guess mode from the first QR Code
string decoded_string = qrCodes[0].GetDecodedString(EByteInterpretationMode.Auto);
```

### Python

```py
import eVision
# Image constructor
src_image = eVision.EImageBW8()

# QR code reader constructor
reader = eVision.EQRCodeReader()

# ...

# Detect QRCodes in src_image
qr_codes = reader.Read(src_image)

# Retrieve the decoded string in best guess mode from the first QR Code
decoded_string = qr_codes[0].GetDecodedString(eVision.EByteInterpretationMode.Auto)
```

<a id="easyarcode-contents"></a>

## Contents

Specifications of the QR codes and **EasyQRCode**.

How to use **EasyQRCode**.

<a id="easyqrcode-quick-links"></a>

## Quick Links

List of all Classes, Structs and Enumerations of the **EasyQRCode** library.

Code snippets for the **EasyQRCode** library.

All the code symbologies read by the text and code reading libraries.

Assess the printing quality of your bar, data matrix and QR codes.

Read bar, data matrix and QR codes using a unified interface.

#### SEE ALSO
The `QR code reading` sample of **eVision Studio** shows how to use the **EasyQRCode** library to read barcodes.
