processImage method

  1. @override
Future<List<CustomFace>> processImage(
  1. CameraImage image,
  2. CameraDescription cameraDescription
)
override

Implementation

@override
Future<List<CustomFace>> processImage(
  CameraImage image,
  CameraDescription cameraDescription,
) async {
  if (_isClosed || _faceDetector == null) return [];
  final inputImage = _toInputImage(image, cameraDescription);
  if (inputImage == null) {
    return [];
  }

  try {
    final faces = await _faceDetector!.processImage(inputImage);

    return faces.map((face) {
      return CustomFace(
        trackingId: face.trackingId,
        smilingProbability: face.smilingProbability ?? 0.0,
        headEulerAngleX: face.headEulerAngleX ?? 0.0,
        headEulerAngleY: face.headEulerAngleY ?? 0.0,
        leftEyeOpenProbability: face.leftEyeOpenProbability ?? 1.0,
        rightEyeOpenProbability: face.rightEyeOpenProbability ?? 1.0,
        boundingBox: face.boundingBox,
        landmarks: [], // Face detector doesn't provide mesh points
      );
    }).toList();
  } catch (e) {
    return [];
  }
}