# EasyObjectInertia

| Support            | ![](assets/images/sample_programs/applies_to/cpp.svg) ![](assets/images/sample_programs/applies_to/cs.svg)   |
|--------------------|--------------------------------------------------------------------------------------------------------------|
| Required licenses  | **EasyObject**                                                                                               |
| Recommended images | The images `Washer` and `Target 1` from the folder `Sample Images.EasyGauge`                                 |
| Location           | `Matching and Measurement/EasyObjectInertia` and Console samples/Matching and Measurement *in Python*        |

## Purpose

This sample program demonstrates how to:

- Find blobs (objects or holes that have the same gray level range) in the image.
- Keep only the blobs whose area is in a given range.

![](assets/images/sample_programs/matching-easyobjectinertia.webp)

## Code highlights

1. Define an image encoder to encode an image (`m_Image`) into an object `ECodedImage2` (`m_CodedImage`).
   ```c++
   EImageEncoder encoder;
   encoder.Encode(m_Image, m_CodedImage);
   ```
2. Add the objects to an object selection object (`EObjectSelection m_Selection`).
   ```c++
   // Select all the objects from the coded image
   m_Selection.Clear();
   m_Selection.AddObjects(m_CodedImage);
   ```
3. Filter the selection of objects by removing all objects whose area is outside the range [50, 10 000].
   ```c++
   // Remove objects too small or too large
   m_Selection.RemoveUsingUnsignedIntegerFeature(EFeature_Area, 50, 10000, EDoubleThresholdMode_Outside);
   ```
4. Draw the selected objects and their ellipse of inertia with their diagonals.
   ```c++
   // Draw all the selected objects
   CodedImage.Draw(drawAdapter, selection);

   // Draw the ellipses of inertia with their diagonals, using a red pen
   const ERGBColor redPen(255, 0, 0);
   CodedImage.DrawFeature(drawAdapter, redPen, EDrawableFeature_Ellipse, selection, 1.0f, 1.0f, 0.0f, 0.0f, true);
   ```
