detectAllRectangles method

  1. @override
Future<List<Map<String, dynamic>>> detectAllRectangles(
  1. Uint8List imageData
)
override

检测图片中所有矩形并返回四个顶点坐标

  • Parameter imageData: 图片的字节数据
  • Returns: 包含所有矩形顶点坐标的List

Implementation

@override
Future<List<Map<String, dynamic>>> detectAllRectangles(
  Uint8List imageData,
) async {
  try {
    // 输入验证
    if (imageData.isEmpty) {
      debugPrint('所有矩形检测错误: 图像数据为空');
      return <Map<String, dynamic>>[];
    }

    // 确保 OpenCV.js 已加载
    await _ensureOpenCVLoaded();

    // 从字节数据创建图像
    final imageElement = await _createImageFromBytes(imageData);

    // 调用 JavaScript 函数检测所有矩形
    final result = _detectAllRectanglesJS(imageElement as JSAny);

    if (result == null) {
      debugPrint('所有矩形检测: 未检测到矩形');
      return <Map<String, dynamic>>[];
    }

    // 转换 JavaScript 数组为 Dart List
    return _convertJSArrayToList(result);
  } catch (e, stackTrace) {
    debugPrint('Web 所有矩形检测错误: $e');
    debugPrint('堆栈跟踪: $stackTrace');
    return <Map<String, dynamic>>[];
  }
}