# FaceMeshDetector

public interface **FaceMeshDetector** extends Detector\<[List](https://developer.android.com/reference/java/util/List.html)\<[FaceMesh](https://developers.google.com/android/reference/com/google/mlkit/vision/facemesh/FaceMesh)\>\> A `https://developers.google.com/android/reference/com/google/mlkit/vision/facemesh/FaceMeshDetection`
client for finding `https://developers.google.com/android/reference/com/google/mlkit/vision/facemesh/FaceMesh`s in a
supplied image, which works best in selfie use case where face is within \~2 meters, or \~6.5
feet from the camera.

The `https://developers.google.com/android/reference/com/google/mlkit/vision/facemesh/FaceMeshDetection`
provides two functionalities. When `https://developers.google.com/android/reference/com/google/mlkit/vision/facemesh/FaceMeshDetectorOptions#BOUNDING_BOX_ONLY` is selected, it detects face bounding
box in selfie image with low latency(i.e. 12ms for a 640 \* 360 image on Pixel 3). When
`https://developers.google.com/android/reference/com/google/mlkit/vision/facemesh/FaceMeshDetectorOptions#FACE_MESH`
is selected, it detects at most 2 faces and for each detected face it provides extra 468 3D
points and its triangle information.

A `https://developers.google.com/android/reference/com/google/mlkit/vision/facemesh/FaceMeshDetector`
is created via `https://developers.google.com/android/reference/com/google/mlkit/vision/facemesh/FaceMeshDetection#getClient(com.google.mlkit.vision.facemesh.FaceMeshDetectorOptions)` or `https://developers.google.com/android/reference/com/google/mlkit/vision/facemesh/FaceMeshDetection#getClient()`,
if you wish to use the default options. For example, the code below creates a `https://developers.google.com/android/reference/com/google/mlkit/vision/facemesh/FaceMeshDetector`
client with default options.

    FaceMeshDetector faceMeshDetector = FaceMeshDetection.getClient();
     
To perform face 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 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 faces in the supplied `https://developers.google.com/android/reference/com/google/mlkit/vision/common/InputImage`.

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

|---|---|
| abstract void | [close](https://developers.google.com/android/reference/com/google/mlkit/vision/facemesh/FaceMeshDetector#close())() Closes the detector and releases its resources. |
| abstract Task\<[List](https://developer.android.com/reference/java/util/List.html)\<[FaceMesh](https://developers.google.com/android/reference/com/google/mlkit/vision/facemesh/FaceMesh)\>\> | [process](https://developers.google.com/android/reference/com/google/mlkit/vision/facemesh/FaceMeshDetector#process(com.google.android.odml.image.MlImage))([MlImage](https://developers.google.com/android/reference/com/google/android/odml/image/MlImage) image) Detects human faces from the supplied image. |
| abstract Task\<[List](https://developer.android.com/reference/java/util/List.html)\<[FaceMesh](https://developers.google.com/android/reference/com/google/mlkit/vision/facemesh/FaceMesh)\>\> | [process](https://developers.google.com/android/reference/com/google/mlkit/vision/facemesh/FaceMeshDetector#process(com.google.mlkit.vision.common.InputImage))(InputImage image) Detects face mesh 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\<[List](https://developer.android.com/reference/java/util/List.html)\<[FaceMesh](https://developers.google.com/android/reference/com/google/mlkit/vision/facemesh/FaceMesh)\>\>
**process** ([MlImage](https://developers.google.com/android/reference/com/google/android/odml/image/MlImage) image)

Detects human faces 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.

If there is no face gets detected, the returned `https://developers.google.com/android/reference/com/google/android/gms/tasks/Task` will
contain an empty `https://developer.android.com/reference/java/util/List.html`.

##### 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/facemesh/FaceMesh`s

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

Detects face mesh 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.

If there is no face gets detected, the returned `https://developers.google.com/android/reference/com/google/android/gms/tasks/Task` will
contain an empty `https://developer.android.com/reference/java/util/List.html`.

##### 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/facemesh/FaceMesh`s