enroll method
Enroll a new face from multiple sample captures.
label is a human-readable name (e.g. "Owner").
samples should contain at least 3 face captures for accuracy.
Implementation
@override
Future<FaceTemplate> enroll(String label, List<Face> samples) async {
if (samples.isEmpty) {
throw ArgumentError(
'At least one face sample is required for enrollment');
}
final featureVectors = <List<double>>[];
for (final face in samples) {
final features = FaceFeatureExtractor.extractFeatures(face);
if (features != null) {
featureVectors.add(features);
}
}
if (featureVectors.isEmpty) {
throw StateError(
'Could not extract features from any sample. '
'Ensure ML Kit is configured with enableContours: true.',
);
}
final averaged = FaceFeatureExtractor.averageFeatures(featureVectors);
final body = await _post('/enroll', {
'label': label,
'features': averaged,
});
return FaceTemplate.fromJson(body);
}