react-native-vision-camera-face-detector
Version:
Frame Processor Plugin to detect faces using MLKit Vision Face Detector for React Native Vision Camera!
67 lines (64 loc) • 1.65 kB
JavaScript
;
import { useMemo } from 'react';
import { Image } from 'react-native';
import { createImageFaceDetector } from '../factory';
// types
/**
* Use a {@linkcode ImageFaceDetector}.
*
* A {@linkcode ImageFaceDetector} can be used to detect
* {@linkcode Face}s in any image provided.
*
* @example
* ```ts
* const uri = 'file:///storage/emulated/0/Download/pic.jpg'
* const ImageFaceDetector = useFaceDetector({...})
* const faces = ImageFaceDetector.detectFaces(uri)
* ```
*/
export function useImageFaceDetector(options) {
/**
* Resolves input image
*
* @param {InputImage} image Image path
* @returns {string} Resolved image
*/
function resolveUri(image) {
const uri = (() => {
switch (typeof image) {
case 'number':
{
const source = Image.resolveAssetSource(image);
return source?.uri;
}
case 'string':
{
return image;
}
case 'object':
{
return image?.uri;
}
default:
{
return undefined;
}
}
})();
if (!uri) throw new Error('Unable to resolve image');
return uri;
}
return useMemo(() => {
const imageFaceDetector = createImageFaceDetector(options);
return {
...imageFaceDetector,
// creates a wrapper to resolve uris before passing to native
detectFaces(image) {
const uri = resolveUri(image);
return imageFaceDetector.detectFaces(uri);
}
};
}, [options]);
}
export default useImageFaceDetector;
//# sourceMappingURL=useImageFaceDetector.js.map