# Learning a Bar Code

This code snippet shows how to learn from a given set of images.

## C++

```cpp
#include <eVision/EasyBarCode/EasyBarCode2/EBarCodeReader.h>
```

```cpp
using namespace eVision;
EImageBW8 srcImage;
std::vector<EImageBW8> learningImages;  // set of images that are close to srcImage
EasyBarCode2::EBarCodeReader reader;

// Reading fails
// std::vector<EasyBarCode2::EBarCode> barcodesFail = reader.Read(srcImage);

// Learns the learningImages
reader.Learn(learningImages);

// Reading succeeds
std::vector<EasyBarCode2::EBarCode> barcodes = reader.Read(srcImage);
```

#### SEE ALSO
[`EBarCodeReader::Read`](../../../../../doxygen_cpp/classeVision_1_1EasyBarCode2_1_1EBarCodeReader.html#a82a90c2861ab8b77859b3d3ac0ea154f) [<sub>.NET</sub>](../../../../../doxygen_cs/classeVision_1_1EasyBarCode2_1_1EBarCodeReader.html#adf5742837f2fe289a51ef4a56ae5fe80) [<sub>Python</sub>](../../../../../doxygen_python/classeVision_1_1EasyBarCode2_1_1EBarCodeReader.html#a3441ffc9eb4eb2f9ca77ae7396d7c2f3), [`EBarCodeReader::Learn`](../../../../../doxygen_cpp/classeVision_1_1EasyBarCode2_1_1EBarCodeReader.html#ae5be0e049c53529b5f14414cd7f0f002) [<sub>.NET</sub>](../../../../../doxygen_cs/classeVision_1_1EasyBarCode2_1_1EBarCodeReader.html#a61806a03b881d36e7ffa3840dbc9280b) [<sub>Python</sub>](../../../../../doxygen_python/classeVision_1_1EasyBarCode2_1_1EBarCodeReader.html#a30675202fad315da8a45229de169f762)

## C#

```cs
using eVision;
```

```cs
EImageBW8 srcImage = new EImageBW8();
EImageBW8[] learningImages = new EImageBW8[4];  // set of images that are close to srcImage
eVision.EasyBarCode2.EBarCodeReader reader = new eVision.EasyBarCode2.EBarCodeReader();

// Reading fails
// eVision.EasyBarCode2.EBarCode[] barcodesFail = reader.Read(srcImage);

// Learns the learningImages
reader.Learn(learningImages);

// Reading succeeds
eVision.EasyBarCode2.EBarCode[] barcodes = reader.Read(srcImage);
```

#### SEE ALSO
[`EBarCodeReader.Read`](../../../../../doxygen_cs/classeVision_1_1EasyBarCode2_1_1EBarCodeReader.html#adf5742837f2fe289a51ef4a56ae5fe80) [<sub>C++</sub>](../../../../../doxygen_cpp/classeVision_1_1EasyBarCode2_1_1EBarCodeReader.html#a82a90c2861ab8b77859b3d3ac0ea154f) [<sub>Python</sub>](../../../../../doxygen_python/classeVision_1_1EasyBarCode2_1_1EBarCodeReader.html#a3441ffc9eb4eb2f9ca77ae7396d7c2f3), [`EBarCodeReader.Learn`](../../../../../doxygen_cs/classeVision_1_1EasyBarCode2_1_1EBarCodeReader.html#a61806a03b881d36e7ffa3840dbc9280b) [<sub>C++</sub>](../../../../../doxygen_cpp/classeVision_1_1EasyBarCode2_1_1EBarCodeReader.html#ae5be0e049c53529b5f14414cd7f0f002) [<sub>Python</sub>](../../../../../doxygen_python/classeVision_1_1EasyBarCode2_1_1EBarCodeReader.html#a30675202fad315da8a45229de169f762)

## Python

```py
import eVision
from eVision import EasyBarCode2
src_roi = eVision.EROIBW8()
learning_roi: list[eVision.EROIBW8 | None] = [eVision.EROIBW8(), eVision.EROIBW8(), eVision.EROIBW8(),
eVision.EROIBW8()]  # set of ROIs that are close to src_roi
reader = EasyBarCode2.EBarCodeReader()

# Reading fails
# barcodesFail = reader.Read(src_image)

# Learns the learning_images
reader.Learn(learning_roi)

# Reading succeeds
barcodes = reader.Read(src_roi)
```

#### SEE ALSO
[`EBarCodeReader.Read`](../../../../../doxygen_python/classeVision_1_1EasyBarCode2_1_1EBarCodeReader.html#a3441ffc9eb4eb2f9ca77ae7396d7c2f3) [<sub>C++</sub>](../../../../../doxygen_cpp/classeVision_1_1EasyBarCode2_1_1EBarCodeReader.html#a82a90c2861ab8b77859b3d3ac0ea154f) [<sub>.NET</sub>](../../../../../doxygen_cs/classeVision_1_1EasyBarCode2_1_1EBarCodeReader.html#adf5742837f2fe289a51ef4a56ae5fe80), [`EBarCodeReader.Learn`](../../../../../doxygen_python/classeVision_1_1EasyBarCode2_1_1EBarCodeReader.html#a30675202fad315da8a45229de169f762) [<sub>C++</sub>](../../../../../doxygen_cpp/classeVision_1_1EasyBarCode2_1_1EBarCodeReader.html#ae5be0e049c53529b5f14414cd7f0f002) [<sub>.NET</sub>](../../../../../doxygen_cs/classeVision_1_1EasyBarCode2_1_1EBarCodeReader.html#a61806a03b881d36e7ffa3840dbc9280b)
