# Grading a Bar Code

This code snippet shows how to compute the ISO15416 grading of a bar code.

## C++

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

```cpp
using namespace eVision;
EImageBW8 srcImage;
EasyBarCode2::EBarCodeReader reader;

// Enables grading computation
reader.SetComputeGrading(true);

// Read the image and retrieve the computed grade
std::vector<EasyBarCode2::EBarCode> barcodes = reader.Read(srcImage);
if (!barcodes.empty())
{
  EasyBarCode2::EBarCodeGradingParameters grades = barcodes[0].GetGradingParameters();

  // global grade on a range from 0 to 40
  grades.GlobalGrade;

  // global grade on a range from F to A
  EasyBarCode2::EBarCodeGradingParameters::ConvertToAlphabeticGrade(grades.GlobalGrade);
}
```

#### 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::SetComputeGrading`](../../../../../doxygen_cpp/classeVision_1_1EasyBarCode2_1_1EBarCodeReader.html#a3e0207f0bc6f2da73ced8b53f9492ca9) [<sub>.NET</sub>](../../../../../doxygen_cs/classeVision_1_1EasyBarCode2_1_1EBarCodeReader.html#aa4ba8bcbce2239bbf11163e03c564853) [<sub>Python</sub>](../../../../../doxygen_python/classeVision_1_1EasyBarCode2_1_1EBarCodeReader.html#a18dcaf28de0618dbd701fd437e4800a9), [`EBarCode::GetGradingParameters`](../../../../../doxygen_cpp/classeVision_1_1EasyBarCode2_1_1EBarCode.html#a7a986712fc22f7ecb807d19a3ec52c69) [<sub>.NET</sub>](../../../../../doxygen_cs/classeVision_1_1EasyBarCode2_1_1EBarCode.html#a38e2f1774f142c75dbd30c8462f693ef) [<sub>Python</sub>](../../../../../doxygen_python/classeVision_1_1EasyBarCode2_1_1EBarCode.html#a18b8f64eba5b0010249fa8d3e6b79ff6)

## C#

```cs
using eVision;
```

```cs
EImageBW8 srcImage = new EImageBW8();
eVision.EasyBarCode2.EBarCodeReader reader = new eVision.EasyBarCode2.EBarCodeReader();

// Enables grading computation
reader.ComputeGrading = true;

// Read the image and retrieve the computed grade
eVision.EasyBarCode2.EBarCode[] barcodes = reader.Read(srcImage);
if (barcodes.Length != 0)
{
  eVision.EasyBarCode2.EBarCodeGradingParameters grades = barcodes[0].GradingParameters;

  // global grade on a range from 0 to 40
  byte grade = grades.GlobalGrade;

  // global grade on a range from F to A
  eVision.EasyBarCode2.EBarCodeGradingParameters.ConvertToAlphabeticGrade(grades.GlobalGrade);
}
```

#### 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.ComputeGrading`](../../../../../doxygen_cs/classeVision_1_1EasyBarCode2_1_1EBarCodeReader.html#aa4ba8bcbce2239bbf11163e03c564853) [<sub>C++</sub>](../../../../../doxygen_cpp/classeVision_1_1EasyBarCode2_1_1EBarCodeReader.html#aa71cd845e32b9d8e927e9b93b22e639e) [<sub>Python</sub>](../../../../../doxygen_python/classeVision_1_1EasyBarCode2_1_1EBarCodeReader.html#a18dcaf28de0618dbd701fd437e4800a9), [`EBarCode.GradingParameters`](../../../../../doxygen_cs/classeVision_1_1EasyBarCode2_1_1EBarCode.html#a38e2f1774f142c75dbd30c8462f693ef) [<sub>C++</sub>](../../../../../doxygen_cpp/classeVision_1_1EasyBarCode2_1_1EBarCode.html#a7a986712fc22f7ecb807d19a3ec52c69) [<sub>Python</sub>](../../../../../doxygen_python/classeVision_1_1EasyBarCode2_1_1EBarCode.html#a18b8f64eba5b0010249fa8d3e6b79ff6)

## Python

```py
import eVision
from eVision import EasyBarCode2
src_image = eVision.EImageBW8()
reader = EasyBarCode2.EBarCodeReader()

# Enables grading computation
reader.ComputeGrading = True

# Read the image and retrieve the computed grade
barcodes = reader.Read(src_image)
if len(barcodes) != 0:
    grades = barcodes[0].GradingParameters

    # global grade on a range from 0 to 40
    grade = grades.GlobalGrade

    # global grade on a range from F to A
    EasyBarCode2.EBarCodeGradingParameters.ConvertToAlphabeticGrade(grades.GlobalGrade)
```

#### 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.ComputeGrading`](../../../../../doxygen_python/classeVision_1_1EasyBarCode2_1_1EBarCodeReader.html#a18dcaf28de0618dbd701fd437e4800a9) [<sub>C++</sub>](../../../../../doxygen_cpp/classeVision_1_1EasyBarCode2_1_1EBarCodeReader.html#aa71cd845e32b9d8e927e9b93b22e639e) [<sub>.NET</sub>](../../../../../doxygen_cs/classeVision_1_1EasyBarCode2_1_1EBarCodeReader.html#aa4ba8bcbce2239bbf11163e03c564853), [`EBarCode.GradingParameters`](../../../../../doxygen_python/classeVision_1_1EasyBarCode2_1_1EBarCode.html#a18b8f64eba5b0010249fa8d3e6b79ff6) [<sub>C++</sub>](../../../../../doxygen_cpp/classeVision_1_1EasyBarCode2_1_1EBarCode.html#a7a986712fc22f7ecb807d19a3ec52c69) [<sub>.NET</sub>](../../../../../doxygen_cs/classeVision_1_1EasyBarCode2_1_1EBarCode.html#a38e2f1774f142c75dbd30c8462f693ef)
