process method

Stream<FaceDetectionResult> process(
  1. Stream<FaceMeshImage> frames, {
  2. NormalizedRect? roi,
  3. FaceDetectorRoiResolver<FaceMeshImage>? roiResolver,
  4. int rotationDegrees = 0,
  5. bool mirrorHorizontal = false,
  6. double? roiScaleX,
  7. double? roiScaleY,
  8. double? roiShiftX,
  9. double? roiShiftY,
})

Processes a stream of FaceMeshImage frames sequentially.

Provide either a static roi or a roiResolver callback to define the detector input ROI per frame. Every incoming frame is processed with the same parameters that you would pass to FaceDetectorProcessor.process. ROI transform overrides (roiScaleX, roiScaleY, roiShiftX, roiShiftY) are forwarded to each frame and default to the values set on FaceDetectorProcessor.create when omitted.

Implementation

Stream<FaceDetectionResult> process(
  Stream<FaceMeshImage> frames, {
  NormalizedRect? roi,
  FaceDetectorRoiResolver<FaceMeshImage>? roiResolver,
  int rotationDegrees = 0,
  bool mirrorHorizontal = false,
  double? roiScaleX,
  double? roiScaleY,
  double? roiShiftX,
  double? roiShiftY,
}) async* {
  _validateResolvers<FaceMeshImage>(roi, roiResolver);
  await for (final FaceMeshImage frame in frames) {
    final NormalizedRect? dynamicRoi = roiResolver?.call(frame);
    yield _processor.process(
      frame,
      roi: dynamicRoi ?? roi,
      rotationDegrees: rotationDegrees,
      mirrorHorizontal: mirrorHorizontal,
      roiScaleX: roiScaleX,
      roiScaleY: roiScaleY,
      roiShiftX: roiShiftX,
      roiShiftY: roiShiftY,
    );
  }
}