Guides
Plan-enterprise-icon
Expo Application Services
API Reference

FaceDetector


expo-face-detector lets you use the power of the Google Mobile Vision framework to detect faces on images.

Platform Compatibility

Android DeviceAndroid EmulatoriOS DeviceiOS SimulatorWeb
Status-success-iconStatus-failed-iconStatus-success-iconStatus-failed-iconStatus-failed-icon

Installation

Terminal
expo install expo-face-detector

If you're installing this in a bare React Native app, you should also follow these additional installation instructions.

Usage

Known issues

  • Android does not recognize faces that aren't aligned with the interface (top of the interface matches top of the head).

Settings

In order to configure detector's behavior modules pass a DetectionOptions object which is then interpreted by this module.

Eg. you could use the following snippet to detect faces in fast mode without detecting landmarks or whether face is smiling:

Example
import * as React from 'react';
import { Camera } from 'expo-camera';
import * as FaceDetector from 'expo-face-detector';

const App = () => (
  <Camera
    // other props
    onFacesDetected={handleFacesDetected}
    faceDetectorSettings={{
      mode: FaceDetector.FaceDetectorMode.fast,
      detectLandmarks: FaceDetector.FaceDetectorLandmarks.none,
      runClassifications: FaceDetector.FaceDetectorClassifications.none,
      minDetectionInterval: 100,
      tracking: true,
    }}
  />
);

%%placeholder-start%%const handleFacesDetected = ({ faces }) => { ... }; %%placeholder-end%%const handleFacesDetected = ({ faces }) => {
  console.log(faces);
};

export default App;

API

import * as FaceDetector from 'expo-face-detector';

Methods

FaceDetector.detectFacesAsync(uri, options)

NameTypeDescription
uristring

file:// URI to the image.

options
(optional)
DetectionOptions

A map of detection options.

Default: {}

Detect faces on a picture.

  • Undo-iconPromise<DetectionResult>

Returns a Promise which fulfils with DetectionResult object.

Types

DetectionOptions

In order to configure detector's behavior modules pass a settings object which is then interpreted by this module.

NameTypeDescription
detectLandmarks
(optional)
FaceDetectorLandmarks

Whether to detect and return landmarks positions on the face (ears, eyes, mouth, cheeks, nose). Use FaceDetector.FaceDetectorLandmarks.{all, none}.

minDetectionInterval
(optional)
number

Minimal interval in milliseconds between two face detection events being submitted to JS. Use, when you expect lots of faces for long time and are afraid of JS Bridge being overloaded.

Default: `0`
mode
(optional)
FaceDetectorMode

Whether to detect faces in fast or accurate mode. Use FaceDetector.FaceDetectorMode.{fast, accurate}.

runClassifications
(optional)
FaceDetectorClassifications

Whether to run additional classifications on detected faces (smiling probability, open eye probabilities). Use FaceDetector.FaceDetectorClassifications.{all, none}.

tracking
(optional)
boolean

Flag to enable tracking of faces between frames. If true, each face will be returned with faceID attribute which should be consistent across frames.

Default: `false`

DetectionResult

NameTypeDescription
facesFaceFeature[]

Array of faces objects.

imageImage-

FaceFeature

NameTypeDescription
bottomMouthPosition
(optional)
Point

Position of the bottom edge of the mouth in image coordinates. Returned only if detection classifications property is set to FaceDetectorLandmarks.all.

boundsFaceFeatureBounds

An object containing face bounds.

faceID
(optional)
number

A face identifier (used for tracking, if the same face appears on consecutive frames it will have the same faceID).

leftCheekPosition
(optional)
Point

Position of the left cheek in image coordinates. Returned only if detection classifications property is set to FaceDetectorLandmarks.all.

leftEarPosition
(optional)
Point

Position of the left ear in image coordinates. Returned only if detection classifications property is set to FaceDetectorLandmarks.all.

leftEyeOpenProbability
(optional)
number

Probability that the left eye is open. Returned only if detection classifications property is set to FaceDetectorClassifications.all.

leftEyePosition
(optional)
Point

Position of the left eye in image coordinates. Returned only if detection classifications property is set to FaceDetectorLandmarks.all.

leftMouthPosition
(optional)
Point

Position of the left edge of the mouth in image coordinates. Returned only if detection classifications property is set to FaceDetectorLandmarks.all.

mouthPosition
(optional)
Point

Position of the center of the mouth in image coordinates. Returned only if detection classifications property is set to FaceDetectorLandmarks.all.

noseBasePosition
(optional)
Point

Position of the nose base in image coordinates. Returned only if detection classifications property is set to FaceDetectorLandmarks.all.

rightCheekPosition
(optional)
Point

Position of the right cheek in image coordinates. Returned only if detection classifications property is set to FaceDetectorLandmarks.all.

rightEarPosition
(optional)
Point

Position of the right ear in image coordinates. Returned only if detection classifications property is set to FaceDetectorLandmarks.all.

rightEyeOpenProbability
(optional)
number

Probability that the right eye is open. Returned only if detection classifications property is set to FaceDetectorClassifications.all.

rightEyePosition
(optional)
Point

Position of the right eye in image coordinates. Returned only if detection classifications property is set to FaceDetectorLandmarks.all.

rightMouthPosition
(optional)
Point

Position of the right edge of the mouth in image coordinates. Returned only if detection classifications property is set to FaceDetectorLandmarks.all.

rollAngle
(optional)
number

Roll angle of the face (bank).

smilingProbability
(optional)
number

Probability that the face is smiling. Returned only if detection classifications property is set to FaceDetectorClassifications.all.

yawAngle
(optional)
number

Yaw angle of the face (heading, turning head left or right).

FaceFeatureBounds

NameTypeDescription
originPoint

Position of the top left corner of a square containing the face in image coordinates,

size{ height: number, width: number }

Size of the square containing the face in image coordinates,

Image

NameTypeDescription
heightnumber

Height of the image in pixels.

orientationnumber

Orientation of the image (value conforms to the EXIF orientation tag standard).

uristring

URI of the image.

widthnumber

Width of the image in pixels.

Point

NameTypeDescription
xnumber-
ynumber-

Enums

FaceDetectorClassifications

none

FaceDetectorClassifications.none = 1

all

FaceDetectorClassifications.all = 2

FaceDetectorLandmarks

none

FaceDetectorLandmarks.none = 1

all

FaceDetectorLandmarks.all = 2

FaceDetectorMode

fast

FaceDetectorMode.fast = 1

accurate

FaceDetectorMode.accurate = 2

Was this doc helpful?