# PoseDetector

public interface **PoseDetector** extends [Detector](https://developers.google.com/android/reference/com/google/mlkit/vision/interfaces/Detector)\<[Pose](https://developers.google.com/android/reference/com/google/mlkit/vision/pose/Pose)\> A `https://developers.google.com/android/reference/com/google/mlkit/vision/pose/PoseDetection`
client for finding `https://developers.google.com/android/reference/com/google/mlkit/vision/pose/Pose` in a supplied
image.

A `https://developers.google.com/android/reference/com/google/mlkit/vision/pose/PoseDetector`
is created via `https://developers.google.com/android/reference/com/google/mlkit/vision/pose/PoseDetection#getClient(com.google.mlkit.vision.pose.PoseDetectorOptionsBase)`. For example:

    PoseDetector poseDetector = PoseDetection.getClient(options);
     
To perform pose 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`, `https://developer.android.com/reference/android/media/Image.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 a `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 `https://developers.google.com/android/reference/com/google/mlkit/vision/pose/Pose` in the supplied `
https://developers.google.com/android/reference/com/google/mlkit/vision/common/InputImage`.

    Task<Pose> task = poseDetector.process(image);
     task.addOnSuccessListener(...).addOnFailureListener(...);
     
### Public Method Summary

|---|---|
| abstract void | [close](https://developers.google.com/android/reference/com/google/mlkit/vision/pose/PoseDetector#close())() Closes the detector 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/pose/PoseDetector#getInitTask())() Returns the task for initializing the `https://developers.google.com/android/reference/com/google/mlkit/vision/pose/PoseDetector`. |
| abstract Task\<[Pose](https://developers.google.com/android/reference/com/google/mlkit/vision/pose/Pose)\> | [process](https://developers.google.com/android/reference/com/google/mlkit/vision/pose/PoseDetector#process(com.google.android.odml.image.MlImage))([MlImage](https://developers.google.com/android/reference/com/google/android/odml/image/MlImage) image) Detects human pose from the supplied image. |
| abstract Task\<[Pose](https://developers.google.com/android/reference/com/google/mlkit/vision/pose/Pose)\> | [process](https://developers.google.com/android/reference/com/google/mlkit/vision/pose/PoseDetector#process(com.google.mlkit.vision.common.InputImage))([InputImage](https://developers.google.com/android/reference/com/google/mlkit/vision/common/InputImage) image) Detects human pose from the 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\<[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/pose/PoseDetector`.

The initialization is triggered in the background when a `https://developers.google.com/android/reference/com/google/mlkit/vision/pose/PoseDetector`
instance is created. The first `https://developers.google.com/android/reference/com/google/mlkit/vision/pose/PoseDetector#process(com.google.mlkit.vision.common.InputImage)` or `https://developers.google.com/android/reference/com/google/mlkit/vision/pose/PoseDetector#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 detector is successfully initialized.

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

Detects human pose from the supplied image.

This is an experimental API in beta version.

Create an `https://developers.google.com/android/reference/com/google/android/odml/image/MlImage`
object using one 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.

##### Returns

- a `https://developers.google.com/android/reference/com/google/android/gms/tasks/Task` that asynchronously returns a detected `https://developers.google.com/android/reference/com/google/mlkit/vision/pose/Pose`

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

Detects human pose from the supplied image.

Create an `https://developers.google.com/android/reference/com/google/mlkit/vision/common/InputImage`
object using one 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.

##### Returns

- a `https://developers.google.com/android/reference/com/google/android/gms/tasks/Task` that asynchronously returns a detected `https://developers.google.com/android/reference/com/google/mlkit/vision/pose/Pose`