detectFaces method
Detect faces from an InputImage
Implementation
Future<List<FaceDetectionResult>> detectFaces(InputImage inputImage) async {
if (!_isInitialized) await initialize();
final faces = await _faceDetector.processImage(inputImage);
final results = <FaceDetectionResult>[];
for (final face in faces) {
// Extract expressions from ML Kit classification
final expressions = _extractExpressions(face);
final dominant = _getDominantExpression(expressions);
// Estimate age from face proportions (heuristic)
final estimatedAge = _estimateAge(face);
// Estimate gender from face features (heuristic)
final estimatedGender = _estimateGender(face);
// Generate face embedding using FaceNet or fall back to geometric
final embedding = await _generateFaceEmbedding(face, inputImage);
results.add(FaceDetectionResult(
face: face,
confidence: face.trackingId != null ? 0.95 : 0.85,
estimatedAge: estimatedAge,
estimatedGender: estimatedGender,
dominantExpression: dominant['expression'] as String?,
expressionConfidence: dominant['confidence'] as double?,
expressions: expressions,
faceEmbedding: embedding,
));
}
return results;
}