Expo FaceDetector

一个库,使用 Google Mobile Vision 检测图片上的人脸。

Android (device only)
iOS (device only)
Bundled version:
~13.0.2

已弃用:此库在 SDK 51 中不可用。如果你需要此功能,我们推荐使用 react-native-vision-camera

expo-face-detector 让你能够利用 Google 机器学习套件 框架的强大功能检测图片上的人脸。

¥expo-face-detector lets you use the power of the Google's ML Kit framework to detect faces on images.

已知的问题

¥Known issues

Android

人脸检测器无法识别与界面不对齐的人脸(界面顶部与头顶对齐)。

¥Face detector does not recognize faces that aren't aligned with the interface (top of the interface matches top of the head).

安装

¥Installation

此模块在 Expo Go 应用 中不可用,因为它包含一些依赖,会破坏 iOS 模拟器的构建。

¥This module is not available in the Expo Go app because it has dependencies that break builds for iOS Simulators.

你可以创建一个 开发构建 来使用此软件包。

¥You can create a development build to work with this package.

Terminal
npx expo install expo-face-detector

If you are installing this in an existing React Native app, make sure to install expo in your project.

用法

¥Usage

设置

¥Settings

要配置检测器的行为模块,请传递一个 DetectionOptions 对象,然后由该模块进行解释。

¥To configure detector's behavior modules pass a DetectionOptions object which is then interpreted by this module.

示例

¥Example

你可以使用以下代码片段在快速模式下检测人脸,无需检测关键点或面部是否微笑。

¥You can use the following snippet to detect faces in a fast mode without detecting landmarks or whether a face is smiling.

Quick face detection
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,
  }}
/>
);

const handleFacesDetected = ({ faces }) => {
console.log(faces);
};

export default App;

API

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

Methods

Deprecated If you require this functionality, we recommend using react-native-vision-camera

FaceDetector.detectFacesAsync(uri, options)

Android
iOS
ParameterTypeDescription
uristring

file:// URI to the image.

options(optional)DetectionOptions

A map of detection options.

Default:{}

Detect faces on a picture.

Returns a Promise which fulfils with DetectionResult object.

Types

DetectionOptions

Android
iOS

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

PropertyTypeDescription
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

Android
iOS
PropertyTypeDescription
facesFaceFeature[]

Array of faces objects.

imageImage-

FaceFeature

Android
iOS
PropertyTypeDescription
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

Android
iOS
PropertyTypeDescription
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

Android
iOS
PropertyTypeDescription
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

Android
iOS
PropertyTypeDescription
xnumber-
ynumber-

Enums

FaceDetectorClassifications

Android
iOS

none

FaceDetectorClassifications.none = 1

all

FaceDetectorClassifications.all = 2

FaceDetectorLandmarks

Android
iOS

none

FaceDetectorLandmarks.none = 1

all

FaceDetectorLandmarks.all = 2

FaceDetectorMode

Android
iOS

fast

FaceDetectorMode.fast = 1

accurate

FaceDetectorMode.accurate = 2