2020-08-20 02:10:42 +02:00
|
|
|
import * as tf from '@tensorflow/tfjs-core';
|
|
|
|
import { extractFaces, extractFaceTensors } from '../dom';
|
|
|
|
import { isWithFaceLandmarks } from '../factories/WithFaceLandmarks';
|
|
|
|
export async function extractAllFacesAndComputeResults(parentResults, input, computeResults, extractedFaces, getRectForAlignment = ({ alignedRect }) => alignedRect) {
|
|
|
|
const faceBoxes = parentResults.map(parentResult => isWithFaceLandmarks(parentResult)
|
2020-08-18 14:04:33 +02:00
|
|
|
? getRectForAlignment(parentResult)
|
|
|
|
: parentResult.detection);
|
|
|
|
const faces = extractedFaces || (input instanceof tf.Tensor
|
2020-08-20 02:10:42 +02:00
|
|
|
? await extractFaceTensors(input, faceBoxes)
|
|
|
|
: await extractFaces(input, faceBoxes));
|
2020-08-18 14:04:33 +02:00
|
|
|
const results = await computeResults(faces);
|
|
|
|
faces.forEach(f => f instanceof tf.Tensor && f.dispose());
|
|
|
|
return results;
|
|
|
|
}
|
2020-08-20 02:10:42 +02:00
|
|
|
export async function extractSingleFaceAndComputeResult(parentResult, input, computeResult, extractedFaces, getRectForAlignment) {
|
2020-08-18 14:04:33 +02:00
|
|
|
return extractAllFacesAndComputeResults([parentResult], input, async (faces) => computeResult(faces[0]), extractedFaces, getRectForAlignment);
|
|
|
|
}
|
|
|
|
//# sourceMappingURL=extractFacesAndComputeResults.js.map
|