# SubjectSegmenter

public interface **SubjectSegmenter** implements Detector\<[SubjectSegmentationResult](https://developers.google.com/android/reference/com/google/mlkit/vision/segmentation/subject/SubjectSegmentationResult)\> [OptionalModuleApi](https://developers.google.com/android/reference/com/google/android/gms/common/api/OptionalModuleApi) An `https://developers.google.com/android/reference/com/google/mlkit/vision/segmentation/subject/SubjectSegmentation`
client for generating `https://developers.google.com/android/reference/com/google/mlkit/vision/segmentation/subject/SubjectSegmentationResult` in a supplied image.

### Public Method Summary

|---|---|
| abstract void | [close](https://developers.google.com/android/reference/com/google/mlkit/vision/segmentation/subject/SubjectSegmenter#close())() Closes the segmenter and releases its resources. |
| abstract Task\<[Void](https://developer.android.com/reference/java/lang/Void.html)\> | [getInitTask](https://developers.google.com/android/reference/com/google/mlkit/vision/segmentation/subject/SubjectSegmenter#getInitTask())() Returns the task for initializing the `https://developers.google.com/android/reference/com/google/mlkit/vision/segmentation/subject/SubjectSegmenter`. |
| abstract Task\<[SubjectSegmentationResult](https://developers.google.com/android/reference/com/google/mlkit/vision/segmentation/subject/SubjectSegmentationResult)\> | [process](https://developers.google.com/android/reference/com/google/mlkit/vision/segmentation/subject/SubjectSegmenter#process(com.google.android.odml.image.MlImage))([MlImage](https://developers.google.com/android/reference/com/google/android/odml/image/MlImage) image) Generates `https://developers.google.com/android/reference/com/google/mlkit/vision/segmentation/subject/SubjectSegmentationResult` from a supplied `https://developers.google.com/android/reference/com/google/android/odml/image/MlImage`. |
| abstract Task\<[SubjectSegmentationResult](https://developers.google.com/android/reference/com/google/mlkit/vision/segmentation/subject/SubjectSegmentationResult)\> | [process](https://developers.google.com/android/reference/com/google/mlkit/vision/segmentation/subject/SubjectSegmenter#process(com.google.mlkit.vision.common.InputImage))(InputImage image) Generates `https://developers.google.com/android/reference/com/google/mlkit/vision/segmentation/subject/SubjectSegmentationResult` from a supplied `https://developers.google.com/android/reference/com/google/mlkit/vision/common/InputImage`. |

### Inherited Method Summary

From interface java.io.Closeable

|---|---|
| abstract void | close() |

From interface java.lang.AutoCloseable

|---|---|
| abstract void | close() |

## Public Methods

#### public abstract void **close** ()

Closes the segmenter and releases its resources.

#### public abstract Task\<[Void](https://developer.android.com/reference/java/lang/Void.html)\> **getInitTask** ()

Returns the task for initializing the `https://developers.google.com/android/reference/com/google/mlkit/vision/segmentation/subject/SubjectSegmenter`.

The initialization is triggered in the background when a `https://developers.google.com/android/reference/com/google/mlkit/vision/segmentation/subject/SubjectSegmenter` instance is created. The first `https://developers.google.com/android/reference/com/google/mlkit/vision/segmentation/subject/SubjectSegmenter#process(com.google.mlkit.vision.common.InputImage)` or `https://developers.google.com/android/reference/com/google/mlkit/vision/segmentation/subject/SubjectSegmenter#process(com.google.android.odml.image.MlImage)` call will wait for the initialization to be finished.

If you want to optimize the latency of the first process call for better user
experience, you could call this method to track initialization progress and only make
the process call when the segmenter is successfully initialized.

#### public abstract Task\<[SubjectSegmentationResult](https://developers.google.com/android/reference/com/google/mlkit/vision/segmentation/subject/SubjectSegmentationResult)\>
**process** ([MlImage](https://developers.google.com/android/reference/com/google/android/odml/image/MlImage) image)

Generates `https://developers.google.com/android/reference/com/google/mlkit/vision/segmentation/subject/SubjectSegmentationResult` from a supplied `https://developers.google.com/android/reference/com/google/android/odml/image/MlImage`.

This is an experimental API in beta version.

##### Returns

- a `https://developers.google.com/android/reference/com/google/android/gms/tasks/Task` that asynchronously returns `https://developers.google.com/android/reference/com/google/mlkit/vision/segmentation/subject/SubjectSegmentationResult`.

#### public abstract Task\<[SubjectSegmentationResult](https://developers.google.com/android/reference/com/google/mlkit/vision/segmentation/subject/SubjectSegmentationResult)\>
**process** (InputImage image)

Generates `https://developers.google.com/android/reference/com/google/mlkit/vision/segmentation/subject/SubjectSegmentationResult` from a supplied `https://developers.google.com/android/reference/com/google/mlkit/vision/common/InputImage`.

##### Returns

- a `https://developers.google.com/android/reference/com/google/android/gms/tasks/Task` that asynchronously returns `https://developers.google.com/android/reference/com/google/mlkit/vision/segmentation/subject/SubjectSegmentationResult`.