# Looping over the runs of an object

This code snippet shows how to loop over the runs of an object.

## C++

```cpp
#include <eVision/EasyObject/EasyObject2/EImageEncoder.h>
```

```cpp
using namespace eVision;
// Image constructor
EImageBW8 srcImage;
// Image encoder
EImageEncoder encoder;
// Coded image
ECodedImage2 codedImage;
// ...
// Encode the source image
encoder.Encode(srcImage, codedImage);
for (unsigned int index = 0; index < codedImage.GetObjCount(); index++)
{
  // Retrieve an object from the coded image.
  ECodedElement blob = codedImage.GetObj(index);

  EObjectRunsIterator it = blob.GetRunsIterator();
  for (it.First(); !it.IsDone(); it.Next())
  {
    int y = it.GetY();
    int startX = it.GetStartX();
    uint32_t length = it.GetLength();
  }
}
```

#### SEE ALSO
[`EObjectRunsIterator`](../../../../doxygen_cpp/classeVision_1_1EObjectRunsIterator.html) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1EObjectRunsIterator.html) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1EObjectRunsIterator.html), [`ECodedElement::GetRunsIterator`](../../../../doxygen_cpp/classeVision_1_1ECodedElement.html#abcd74e3a67216e9fd6185105142eafc3) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1ECodedElement.html#aab4c60052747c42d74eb43c82be936ff) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1ECodedElement.html#a588d46b3c4b6c7425a017e92a5452d5c)

## C#

```cs
using eVision;
```

```cs
// Image constructor
EImageBW8 srcImage = new EImageBW8();
// Image encoder
EImageEncoder encoder = new EImageEncoder();
// Coded image
ECodedImage2 codedImage = new ECodedImage2();
// ...
// Encode the source image
encoder.Encode(srcImage, codedImage);
for (uint index = 0; index < codedImage.GetObjCount(); index++)
{
  // Retrieve an object from the coded image.
  ECodedElement blob = codedImage.GetObj(index);

  EObjectRunsIterator it = blob.RunsIterator;
  for (it.First(); !it.IsDone; it.Next())
  {
    int y = it.Y;
    int startX = it.StartX;
    uint length = it.Length;
  }
}
```

#### SEE ALSO
[`EObjectRunsIterator`](../../../../doxygen_cs/classeVision_1_1EObjectRunsIterator.html) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1EObjectRunsIterator.html) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1EObjectRunsIterator.html), [`ECodedElement.RunsIterator`](../../../../doxygen_cs/classeVision_1_1ECodedElement.html#aab4c60052747c42d74eb43c82be936ff) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1ECodedElement.html#a588d46b3c4b6c7425a017e92a5452d5c) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1ECodedElement.html#abcd74e3a67216e9fd6185105142eafc3)

## Python

```py
import eVision
# Image constructor
src_image = eVision.EImageBW8()
# Image encoder
encoder = eVision.EImageEncoder()
# Coded image
codedImage = eVision.ECodedImage2()
# ...
# Encode the source image
encoder.Encode(src_image, codedImage)
for index in range(codedImage.GetObjCount()):
    # Retrieve the selected blob gravity center
    blob = codedImage.GetObj(index)

    it = blob.RunsIterator
    it.First()
    while not it.IsDone():
        y = it.Y
        startX = it.StartX
        length = it.Length
        it.Next()
```

#### SEE ALSO
[`EObjectRunsIterator`](../../../../doxygen_python/classeVision_1_1EObjectRunsIterator.html) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1EObjectRunsIterator.html) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1EObjectRunsIterator.html), [`ECodedElement.RunsIterator`](../../../../doxygen_python/classeVision_1_1ECodedElement.html#a588d46b3c4b6c7425a017e92a5452d5c) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1ECodedElement.html#aab4c60052747c42d74eb43c82be936ff) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1ECodedElement.html#abcd74e3a67216e9fd6185105142eafc3)
