YOLOResult.fromMap constructor

YOLOResult.fromMap(
  1. Map map
)

Creates a YOLOResult from a map representation.

This factory constructor is primarily used for deserializing results received from the platform channel. The map should contain keys:

  • 'classIndex': int
  • 'className': String
  • 'confidence': double
  • 'boundingBox': Map with 'left', 'top', 'right', 'bottom'
  • 'normalizedBox': Map with 'left', 'top', 'right', 'bottom'
  • 'mask': (optional) List of List of double
  • 'keypoints': (optional) List of double in x,y,confidence triplets

Implementation

factory YOLOResult.fromMap(Map<dynamic, dynamic> map) {
  final classIndex = MapConverter.safeGetInt(map, 'classIndex');
  final className = MapConverter.safeGetString(map, 'className');
  final confidence = MapConverter.safeGetDouble(map, 'confidence');

  final boxMap = MapConverter.convertToTypedMapSafe(
    map['boundingBox'] as Map<dynamic, dynamic>?,
  );
  final boundingBox = boxMap != null
      ? MapConverter.convertBoundingBox(boxMap)
      : Rect.zero;

  final normalizedBoxMap = MapConverter.convertToTypedMapSafe(
    map['normalizedBox'] as Map<dynamic, dynamic>?,
  );
  final normalizedBox = normalizedBoxMap != null
      ? MapConverter.convertBoundingBox(normalizedBoxMap)
      : Rect.zero;

  List<List<double>>? mask;
  if (map.containsKey('mask') && map['mask'] != null) {
    final maskData = map['mask'] as List<dynamic>;
    mask = MapConverter.convertMaskData(maskData);
  }

  List<Point>? keypoints;
  List<double>? keypointConfidences;
  if (map.containsKey('keypoints') && map['keypoints'] != null) {
    final keypointsData = map['keypoints'] as List<dynamic>;
    final keypointResult = MapConverter.convertKeypoints(keypointsData);
    keypoints = keypointResult.keypoints;
    keypointConfidences = keypointResult.confidences;
  }

  return YOLOResult(
    classIndex: classIndex,
    className: className,
    confidence: confidence,
    boundingBox: boundingBox,
    normalizedBox: normalizedBox,
    mask: mask,
    keypoints: keypoints,
    keypointConfidences: keypointConfidences,
  );
}