react-native-vision-camera-facekit
v1.1.2
Published
VisionCamera Frame Processor Plugin to detect faces using MLKit Vision Face Detector and Apple Vision Camera for React Native Vision Camera v4
Maintainers
Readme
react-native-vision-camera-facekit
Description
react-native-vision-camera-facekit is a React Native Frame Processor Plugin for Vision Camera v4 that provides cross-platform face detection functionality. It supports:
- Android via MLKit Vision Face Detector
- iOS via Apple Vision Framework
- Real-time face detection using the device camera
- Configurable detection options (performance, landmarks, contours, classification, minimum face size, tracking)
Features
- High-performance, native JSI-based frame processors
- Flexible options for speed vs. accuracy
- Contour and landmark extraction
- Face tracking (optional)
Installation
# yarn
yarn add react-native-vision-camera-facekit
# or npm
npm install react-native-vision-camera-facekit --saveThen install pods (iOS):
cd ios && pod install && cd ..Usage
import React from 'react';
import { StyleSheet, View, Text } from 'react-native';
import {
Camera,
useCameraDevice,
useFrameProcessor,
} from 'react-native-vision-camera';
import { scanFaces } from 'react-native-vision-camera-facekit';
import { runOnJS } from 'react-native-reanimated';
export default function App() {
const device = useCameraDevice('front');
const [faces, setFaces] = React.useState([]);
React.useEffect(() => {
(async () => {
const status = await Camera.requestCameraPermission();
console.log('Camera permission:', status);
})();
}, []);
const frameProcessor = useFrameProcessor((frame) => {
'worklet';
try {
const detected = scanFaces(frame, {
performanceMode: 'fast',
classificationMode: 'all',
contourMode: 'all',
landmarkMode: 'all',
minFaceSize: 0.1,
trackingEnabled: false,
});
runOnJS(setFaces)(detected);
} catch (e) {
console.error('scanFaces error', e);
}
}, []);
if (!device) {
return <Text>Loading camera...</Text>;
}
return (
<View style={{ flex: 1 }}>
<Camera
style={StyleSheet.absoluteFill}
device={device}
isActive={true}
frameProcessor={frameProcessor}
frameProcessorFps={5}
photo={false}
/>
</View>
);
}API
scanFaces(frame: Frame, options?: FaceDetectionOptions): Face[]
frame:
Framefrom Vision Cameraoptions (all optional):
performanceMode:'fast' | 'accurate'(default'fast')landmarkMode:'none' | 'all'(default'none')contourMode:'none' | 'all'(default'none')classificationMode:'none' | 'all'(default'none')minFaceSize:number(default0.1)trackingEnabled:boolean(defaultfalse)
Returns: Array of Face objects with bounds, angles, probabilities, contours, and landmarks.
License
MIT © Cristofer Feliz
