# Image Segmenter

This code snippet shows how to build blobs according to a user-defined image segmenter.

## C++

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

```cpp
using namespace eVision;
// Image constructor
EImageBW8 srcImage;
// Image encoder
EImageEncoder encoder;
// Coded image
ECodedImage2 codedImage;
// ...
// Set the segmentation method to GrayscaleDoubleThreshold
encoder.SetSegmentationMethod(ESegmentationMethod_GrayscaleDoubleThreshold);
// Retrieve the segmenter object
Segmenters::EGrayscaleDoubleThresholdSegmenter& segmenter = encoder.GetGrayscaleDoubleThresholdSegmenter();
// Set the high and low threshold values
segmenter.SetHighThreshold(150);
segmenter.SetLowThreshold(50);
// Specify the layers to be encoded (neutral layer only)
segmenter.SetBlackLayerEncoded(false);
segmenter.SetNeutralLayerEncoded(true);
segmenter.SetWhiteLayerEncoded(false);
// Encode the image
encoder.Encode(srcImage, codedImage);
```

#### SEE ALSO
[`EImageEncoder::SetSegmentationMethod`](../../../../doxygen_cpp/classeVision_1_1EImageEncoder.html#abb35ac59ae3fca68b28595af6e07c988) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1EImageEncoder.html#a7aa2f5ad29291fd8dea1dce347b2288b) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1EImageEncoder.html#a606312e026ce9a8dec84407b7eea3d49), [`EImageEncoder::GetGrayscaleDoubleThresholdSegmenter`](../../../../doxygen_cpp/classeVision_1_1EImageEncoder.html#aec503fc0bd6a249bc55bbd86ead7aa9f) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1EImageEncoder.html#ac2dcdbf098a715e7e2cb6fa0652b2299) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1EImageEncoder.html#a64426a1ac516d48be688e215b6576c2a), [`EGrayscaleDoubleThresholdSegmenter::SetHighThreshold`](../../../../doxygen_cpp/classeVision_1_1Segmenters_1_1EGrayscaleDoubleThresholdSegmenter.html#ac5955b364596cd9456c324134616dea3) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1Segmenters_1_1EGrayscaleDoubleThresholdSegmenter.html#a579b810d6c72d2fbc2f905a931439e1a) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1Segmenters_1_1EGrayscaleDoubleThresholdSegmenter.html#adbe8759e2dcc8a4bcde837bcc4f0ba2e), [`EGrayscaleDoubleThresholdSegmenter::SetLowThreshold`](../../../../doxygen_cpp/classeVision_1_1Segmenters_1_1EGrayscaleDoubleThresholdSegmenter.html#a5f5184f228ca3cde7244913595413940) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1Segmenters_1_1EGrayscaleDoubleThresholdSegmenter.html#adcbb6b09a5f7d919166611dd20fcab4d) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1Segmenters_1_1EGrayscaleDoubleThresholdSegmenter.html#af5ca86f1876f3839639109153e35819f)

## C#

```cs
using eVision;
```

```cs
// Image constructor
EImageBW8 srcImage = new EImageBW8();
// Image encoder
EImageEncoder encoder = new EImageEncoder();
// Coded image
ECodedImage2 codedImage = new ECodedImage2();
// ...
// Set the segmentation method to GrayscaleDoubleThreshold
encoder.SegmentationMethod = ESegmentationMethod.GrayscaleDoubleThreshold;
// Retrieve the segmenter object
eVision.Segmenters.EGrayscaleDoubleThresholdSegmenter segmenter = encoder.GrayscaleDoubleThresholdSegmenter;
// Set the high and low threshold values
segmenter.HighThreshold = 150;
segmenter.LowThreshold = 50;
// Specify the layers to be encoded (neutral layer only)
segmenter.BlackLayerEncoded = false;
segmenter.NeutralLayerEncoded = true;
segmenter.WhiteLayerEncoded = false;
// Encode the image
encoder.Encode(srcImage, codedImage);
```

#### SEE ALSO
[`EImageEncoder.SegmentationMethod`](../../../../doxygen_cs/classeVision_1_1EImageEncoder.html#a7aa2f5ad29291fd8dea1dce347b2288b) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1EImageEncoder.html#a9d02c325570d203366c1c0fece480f59) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1EImageEncoder.html#a606312e026ce9a8dec84407b7eea3d49), [`EImageEncoder.GrayscaleDoubleThresholdSegmenter`](../../../../doxygen_cs/classeVision_1_1EImageEncoder.html#ac2dcdbf098a715e7e2cb6fa0652b2299) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1EImageEncoder.html#aec503fc0bd6a249bc55bbd86ead7aa9f) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1EImageEncoder.html#a64426a1ac516d48be688e215b6576c2a), [`EGrayscaleDoubleThresholdSegmenter.HighThreshold`](../../../../doxygen_cs/classeVision_1_1Segmenters_1_1EGrayscaleDoubleThresholdSegmenter.html#a579b810d6c72d2fbc2f905a931439e1a) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1Segmenters_1_1EGrayscaleDoubleThresholdSegmenter.html#aa640d3863d0e2160d76b6e2ea9c75e73) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1Segmenters_1_1EGrayscaleDoubleThresholdSegmenter.html#adbe8759e2dcc8a4bcde837bcc4f0ba2e), [`EGrayscaleDoubleThresholdSegmenter.LowThreshold`](../../../../doxygen_cs/classeVision_1_1Segmenters_1_1EGrayscaleDoubleThresholdSegmenter.html#adcbb6b09a5f7d919166611dd20fcab4d) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1Segmenters_1_1EGrayscaleDoubleThresholdSegmenter.html#a9658e0f7339e73136d5fe3e5580952a4) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1Segmenters_1_1EGrayscaleDoubleThresholdSegmenter.html#af5ca86f1876f3839639109153e35819f)

## Python

```py
import eVision
# Image constructor
src_image = eVision.EImageBW8()
# Image encoder
encoder = eVision.EImageEncoder()
# Coded image
codedImage = eVision.ECodedImage2()
# ...
# Set the segmentation method to GrayscaleDoubleThreshold
encoder.SegmentationMethod = eVision.ESegmentationMethod.GrayscaleDoubleThreshold
# Retrieve the segmenter object
segmenter = encoder.GrayscaleDoubleThresholdSegmenter
# Set the high and low threshold values
segmenter.HighThreshold = 150
segmenter.LowThreshold = 50
# Specify the layers to be encoded (neutral layer only)
segmenter.BlackLayerEncoded = False
segmenter.NeutralLayerEncoded = True
segmenter.WhiteLayerEncoded = False
# Encode the image
encoder.Encode(src_image, codedImage)
```

#### SEE ALSO
[`EImageEncoder.SegmentationMethod`](../../../../doxygen_python/classeVision_1_1EImageEncoder.html#a606312e026ce9a8dec84407b7eea3d49) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1EImageEncoder.html#a9d02c325570d203366c1c0fece480f59) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1EImageEncoder.html#a7aa2f5ad29291fd8dea1dce347b2288b), [`EImageEncoder.GrayscaleDoubleThresholdSegmenter`](../../../../doxygen_python/classeVision_1_1EImageEncoder.html#a64426a1ac516d48be688e215b6576c2a) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1EImageEncoder.html#aec503fc0bd6a249bc55bbd86ead7aa9f) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1EImageEncoder.html#ac2dcdbf098a715e7e2cb6fa0652b2299), [`EGrayscaleDoubleThresholdSegmenter.HighThreshold`](../../../../doxygen_python/classeVision_1_1Segmenters_1_1EGrayscaleDoubleThresholdSegmenter.html#adbe8759e2dcc8a4bcde837bcc4f0ba2e) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1Segmenters_1_1EGrayscaleDoubleThresholdSegmenter.html#aa640d3863d0e2160d76b6e2ea9c75e73) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1Segmenters_1_1EGrayscaleDoubleThresholdSegmenter.html#a579b810d6c72d2fbc2f905a931439e1a), [`EGrayscaleDoubleThresholdSegmenter.LowThreshold`](../../../../doxygen_python/classeVision_1_1Segmenters_1_1EGrayscaleDoubleThresholdSegmenter.html#af5ca86f1876f3839639109153e35819f) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1Segmenters_1_1EGrayscaleDoubleThresholdSegmenter.html#a9658e0f7339e73136d5fe3e5580952a4) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1Segmenters_1_1EGrayscaleDoubleThresholdSegmenter.html#adcbb6b09a5f7d919166611dd20fcab4d)
