# ImageLabeler

public interface **ImageLabeler** extends [Detector](https://developers.google.com/android/reference/com/google/mlkit/vision/interfaces/Detector)\<[List](https://developer.android.com/reference/java/util/List.html)\<[ImageLabel](https://developers.google.com/android/reference/com/google/mlkit/vision/label/ImageLabel)\>\>, [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/label/ImageLabeling`
client for finding `https://developers.google.com/android/reference/com/google/mlkit/vision/label/ImageLabel`s in
a supplied image.

An image labeler is created via `https://developers.google.com/android/reference/com/google/mlkit/vision/label/ImageLabeling#getClient(com.google.mlkit.vision.label.ImageLabelerOptionsBase)`.

Example:

    ImageLabeler imageLabeler = ImageLabeling.getClient(options);
     
To perform label detection in an image, you first need to create an instance of
`https://developers.google.com/android/reference/com/google/mlkit/vision/common/InputImage`
from a `https://developer.android.com/reference/android/graphics/Bitmap.html`,
`https://developer.android.com/reference/java/nio/ByteBuffer.html`, etc. See
`https://developers.google.com/android/reference/com/google/mlkit/vision/common/InputImage`
documentation for more details. For example, the code below creates an `https://developers.google.com/android/reference/com/google/mlkit/vision/common/InputImage`
from a `https://developer.android.com/reference/android/graphics/Bitmap.html`.

    InputImage image = InputImage.fromBitmap(bitmap, rotationDegrees);
     
Then the code below can detect labels in the supplied `https://developers.google.com/android/reference/com/google/mlkit/vision/common/InputImage`.

    Task<List<ImageLabel>> task = imageLabeler.process(image);
     task.addOnSuccessListener(...).addOnFailureListener(...);
     
### Public Method Summary

|---|---|
| abstract void | [close](https://developers.google.com/android/reference/com/google/mlkit/vision/label/ImageLabeler#close())() Closes the detector and releases its resources. |
| abstract Task\<[List](https://developer.android.com/reference/java/util/List.html)\<[ImageLabel](https://developers.google.com/android/reference/com/google/mlkit/vision/label/ImageLabel)\>\> | [process](https://developers.google.com/android/reference/com/google/mlkit/vision/label/ImageLabeler#process(com.google.android.odml.image.MlImage))([MlImage](https://developers.google.com/android/reference/com/google/android/odml/image/MlImage) image) Detects image labels from a supplied image. |
| abstract Task\<[List](https://developer.android.com/reference/java/util/List.html)\<[ImageLabel](https://developers.google.com/android/reference/com/google/mlkit/vision/label/ImageLabel)\>\> | [process](https://developers.google.com/android/reference/com/google/mlkit/vision/label/ImageLabeler#process(com.google.mlkit.vision.common.InputImage))([InputImage](https://developers.google.com/android/reference/com/google/mlkit/vision/common/InputImage) image) Detects image labels from a supplied image. |

### 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 detector and releases its resources.

#### public abstract Task\<[List](https://developer.android.com/reference/java/util/List.html)\<[ImageLabel](https://developers.google.com/android/reference/com/google/mlkit/vision/label/ImageLabel)\>\>
**process** ([MlImage](https://developers.google.com/android/reference/com/google/android/odml/image/MlImage) image)

Detects image labels from a supplied image.

This is an experimental API in beta version.

For image labeling model trained with AutoML Vision Edge, creating an `https://developers.google.com/android/reference/com/google/android/odml/image/MlImage`
object from `https://developers.google.com/android/reference/com/google/android/odml/image/BitmapMlImageBuilder`
gives best performance.

For other image labeling models, create an `https://developers.google.com/android/reference/com/google/mlkit/vision/common/InputImage`
object using any of `https://developers.google.com/android/reference/com/google/android/odml/image/MlImage`'s
builder methods. See `https://developers.google.com/android/reference/com/google/android/odml/image/MlImage`
documentation for more details.

If `https://developers.google.com/android/reference/com/google/mlkit/vision/label/ImageLabeler`
is created with `https://developers.google.com/android/reference/com/google/mlkit/vision/label/custom/CustomImageLabelerOptions`, the returned `https://developers.google.com/android/reference/com/google/android/gms/tasks/Task` will be an
`https://developers.google.com/android/reference/com/google/mlkit/common/MlKitException`
with specific error code in the following cases: (1) with error code `https://developers.google.com/android/reference/com/google/mlkit/common/MlKitException#NOT_FOUND`
if cannot find the custom classifier model file; (2) with error code `https://developers.google.com/android/reference/com/google/mlkit/common/MlKitException#INVALID_ARGUMENT`
if the custom model file is not compatible with this SDK.

##### Returns

- a `https://developers.google.com/android/reference/com/google/android/gms/tasks/Task` that asynchronously returns a `https://developer.android.com/reference/java/util/List.html` of detected `https://developers.google.com/android/reference/com/google/mlkit/vision/label/ImageLabel`s. The labels are returned sorted by confidence in descending order. An empty list is returned by the `https://developers.google.com/android/reference/com/google/android/gms/tasks/Task` if no labels are detected.

#### public abstract Task\<[List](https://developer.android.com/reference/java/util/List.html)\<[ImageLabel](https://developers.google.com/android/reference/com/google/mlkit/vision/label/ImageLabel)\>\>
**process** ([InputImage](https://developers.google.com/android/reference/com/google/mlkit/vision/common/InputImage) image)

Detects image labels from a supplied image.

For image labeling model trained with AutoML Vision Edge, creating an `https://developers.google.com/android/reference/com/google/mlkit/vision/common/InputImage`
object from `https://developers.google.com/android/reference/com/google/mlkit/vision/common/InputImage#fromBitmap(android.graphics.Bitmap,%20int)` gives best performance.

For other image labeling models, create an `https://developers.google.com/android/reference/com/google/mlkit/vision/common/InputImage`
object using any of `https://developers.google.com/android/reference/com/google/mlkit/vision/common/InputImage`'s
factory methods. See `https://developers.google.com/android/reference/com/google/mlkit/vision/common/InputImage`
documentation for more details.

If `https://developers.google.com/android/reference/com/google/mlkit/vision/label/ImageLabeler`
is created with `https://developers.google.com/android/reference/com/google/mlkit/vision/label/custom/CustomImageLabelerOptions`, the returned `https://developers.google.com/android/reference/com/google/android/gms/tasks/Task` will be an
`https://developers.google.com/android/reference/com/google/mlkit/common/MlKitException`
with specific error code in the following cases: (1) with error code `https://developers.google.com/android/reference/com/google/mlkit/common/MlKitException#NOT_FOUND`
if cannot find the custom classifier model file; (2) with error code `https://developers.google.com/android/reference/com/google/mlkit/common/MlKitException#INVALID_ARGUMENT`
if the custom model file is not compatible with this SDK.

##### Returns

- a `https://developers.google.com/android/reference/com/google/android/gms/tasks/Task` that asynchronously returns a `https://developer.android.com/reference/java/util/List.html` of detected `https://developers.google.com/android/reference/com/google/mlkit/vision/label/ImageLabel`s. The labels are returned sorted by confidence in descending order. An empty list is returned by the `https://developers.google.com/android/reference/com/google/android/gms/tasks/Task` if no labels are detected.