我正在尝试在 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
提前致谢!
我尝试过的:
将图像从 YUV 转换为 Android 中的 nv21 和 IOS 中的 bgra8888。