initializeSegmentation method
Future<void>
initializeSegmentation({
- SegmentationConfig? config,
- Set<
Accelerator> ? accelerators, - Precision? precision,
Initializes the optional segmentation model.
Call this after initialize to enable segmentation features. Does nothing if segmentation is already initialized.
config: Segmentation configuration. If null, uses SegmentationConfig.safe.
Throws SegmentationException on model load failure.
Example:
final detector = FaceDetector();
await detector.initialize();
await detector.initializeSegmentation();
final mask = await detector.getSegmentationMask(imageBytes);
Implementation
Future<void> initializeSegmentation({
SegmentationConfig? config,
Set<Accelerator>? accelerators,
Precision? precision,
}) async {
_requireReady();
if (_segmentationInitialized) return;
if (accelerators != null) _accelerators = accelerators;
if (precision != null) _precision = precision;
final effectiveConfig = config ?? SegmentationConfig.safe;
final segModelFile = segmentationModelFile(effectiveConfig.model);
final segmentationRpc = IsolateRpcClient();
final data = await rootBundle.load(
'packages/face_detection_tflite/assets/models/$segModelFile',
);
try {
await _spawnSegmentationIsolate(
rpc: segmentationRpc,
modelBytes: data.buffer.asUint8List(),
config: effectiveConfig,
);
_segmentationRpc = segmentationRpc;
_segmentationInitialized = true;
} catch (_) {
await segmentationRpc.disposeGracefully(disposeOp: 'dispose');
rethrow;
}
}