Flutter:将图像转换为InputImage进行文本识别时出错 -PlatformException(InputImageConverterError, java.lang.IllegalArgumentException)

问题描述 投票:0回答:1

我正在尝试在 Flutter 中使用 Google ML Kit 的文本识别 API 在处理图像后从图像中提取文本。但是,在将处理后的图像转换为 InputImage 时遇到错误。这是我的代码的相关部分:

Future<void> _extractTextFromProcessedImage(img.Image image) async {
  final imgBytes = Uint8List.fromList(img.encodeJpg(image));
  final metadata = InputImageMetadata(
    format: InputImageFormat.yuv420,
    size:  Size(image.width.toDouble(), image.height.toDouble()),
    rotation: InputImageRotation.rotation0deg,
    bytesPerRow: 0); // ignored

  final inputImage = InputImage.fromBytes(bytes: imgBytes, metadata: metadata);

  try {
    final recognizedText = await textRecognizer.processImage(inputImage);

    setState(() {
      _extractedText = recognizedText.text;
    });
  } catch (e) {
    print('Error recognizing text: $e');
  }
}

运行代码时,出现以下错误:

2024-12-07 15:02:38.583 14697-14697 ImageError com.example.image_text_extractor E java.lang.IllegalArgumentException 2024-12-07 15:02:38.596 14697-14887 flutter com.example.image_text_extractor I 识别文本时出错:PlatformException(InputImageConverterError, java.lang.IllegalArgumentException, null, null)

详情:

  • 错误消息 PlatformException(InputImageConverterError, java.lang.IllegalArgumentException) 表示图像转换过程中出现问题。

  • 我使用 img.encodeJpg(image) 方法将处理后的图像编码为 JPG 字节数组。

  • 图像格式设置为InputImageFormat.yuv420,但我不确定这是否适合JPG字节数组。

我的问题:

  • InputImageFormat.yuv420 是 JPG 图像的正确格式吗?如果不是,JPG 图片的格式应该是什么?

  • 我是否错误地处理了图像转换过程?在将图像传递给 InputImage.fromBytes() 之前,我应该如何处理图像?

  • 对于解决与图像转换错误相关的 PlatformException 有什么建议吗? ** pubspec.yaml** 依赖项:


dependencies:
  flutter:
    sdk: flutter

  google_mlkit_text_recognition: ^0.14.0
  image_picker: ^1.1.2
  image: ^3.0.1

提前致谢!

我尝试过的:

  1. 我尝试使用encodeJpg(image)方法将图像转换为字节数组。
  2. 我将格式设置为InputImageFormat.yuv420,这可能不适合JPG图像。
  3. 我已经检查了图像元数据,它被作为大小、旋转和 bytesPerRow 传递。
flutter
1个回答
0
投票

将图像从 YUV 转换为 Android 中的 nv21 和 IOS 中的 bgra8888。

另请参阅:https://pub.dev/packages/google_mlkit_commons

© www.soinside.com 2019 - 2024. All rights reserved.