# Retrieving Information of a QR Code

This code snippet shows how to read a QR code and retrieve the associated information.

## 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 version, model and position information
// of the first QR code found, if one was found
if (qrCodes.size() > 0)
{
  int version = qrCodes[0].GetVersion();
  EQRCodeModel model = qrCodes[0].GetModel();
  EQRCodeGeometry geometry = qrCodes[0].GetGeometry();
}
```

#### SEE ALSO
[`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), [`EQRCode::GetVersion`](../../../../doxygen_cpp/classeVision_1_1EQRCode.html#aa390bada368c382630f4a025528e3f43) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1EQRCode.html#af619ce3414c0170a80c6d4024324c8c9) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1EQRCode.html#a10972931091f1e2d80de38f4f5f05175), [`EQRCode::GetModel`](../../../../doxygen_cpp/classeVision_1_1EQRCode.html#a013adadafde4725d8e3ca48f55100107) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1EQRCode.html#ac65504db997a492ce1aaf568976d5f3e) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1EQRCode.html#a05378c1a74ac3276476fe31db1086fc1), [`EQRCode::GetGeometry`](../../../../doxygen_cpp/classeVision_1_1EQRCode.html#a9d5dacceefa4ff5eabd822875b926967) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1EQRCode.html#aab26ab755d0011da415c47f05e42844b) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1EQRCode.html#aa760b771fa6dc587d6997ecec3c9aa62)

## 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 version, model and position information
// of the first QR code found, if one was found
if (qrCodes.Length > 0)
{
  uint version = qrCodes[0].Version;
  EQRCodeModel model = qrCodes[0].Model;
  EQRCodeGeometry geometry = qrCodes[0].Geometry;
}
```

#### SEE ALSO
[`EQRCodeReader.Read`](../../../../doxygen_cs/classeVision_1_1EQRCodeReader.html#af3a09d6c336baba0d2d1f078f37c6877) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1EQRCodeReader.html#aca78237d6203febd6221ed2e05cdc19b) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1EQRCodeReader.html#a98fbd0bb085de6d6d609875e6cc82ae4), [`EQRCode.Version`](../../../../doxygen_cs/classeVision_1_1EQRCode.html#af619ce3414c0170a80c6d4024324c8c9) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1EQRCode.html#aa390bada368c382630f4a025528e3f43) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1EQRCode.html#a10972931091f1e2d80de38f4f5f05175), [`EQRCode.Model`](../../../../doxygen_cs/classeVision_1_1EQRCode.html#ac65504db997a492ce1aaf568976d5f3e) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1EQRCode.html#a013adadafde4725d8e3ca48f55100107) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1EQRCode.html#a05378c1a74ac3276476fe31db1086fc1), [`EQRCode.Geometry`](../../../../doxygen_cs/classeVision_1_1EQRCode.html#aab26ab755d0011da415c47f05e42844b) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1EQRCode.html#a9d5dacceefa4ff5eabd822875b926967) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1EQRCode.html#aa760b771fa6dc587d6997ecec3c9aa62)

## Python

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

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

# ...

# Read
qr_codes = reader.Read(src_image)

# Retrieve version, model and position information
# of the first QR code found, if one was found
if len(qr_codes) > 0:
    version = qr_codes[0].Version
    model = qr_codes[0].Model
    geometry = qr_codes[0].Geometry
```

#### SEE ALSO
[`EQRCodeReader.Read`](../../../../doxygen_python/classeVision_1_1EQRCodeReader.html#a98fbd0bb085de6d6d609875e6cc82ae4) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1EQRCodeReader.html#aca78237d6203febd6221ed2e05cdc19b) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1EQRCodeReader.html#af3a09d6c336baba0d2d1f078f37c6877), [`EQRCode.Version`](../../../../doxygen_python/classeVision_1_1EQRCode.html#a10972931091f1e2d80de38f4f5f05175) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1EQRCode.html#aa390bada368c382630f4a025528e3f43) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1EQRCode.html#af619ce3414c0170a80c6d4024324c8c9), [`EQRCode.Model`](../../../../doxygen_python/classeVision_1_1EQRCode.html#a05378c1a74ac3276476fe31db1086fc1) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1EQRCode.html#a013adadafde4725d8e3ca48f55100107) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1EQRCode.html#ac65504db997a492ce1aaf568976d5f3e), [`EQRCode.Geometry`](../../../../doxygen_python/classeVision_1_1EQRCode.html#aa760b771fa6dc587d6997ecec3c9aa62) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1EQRCode.html#a9d5dacceefa4ff5eabd822875b926967) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1EQRCode.html#aab26ab755d0011da415c47f05e42844b)
