将 base64 字符串编码的图像/字节图像作为图像传递,以便在 Flutter 中的 Firebase ML Visi



我想从base64编码的图像中OCR文本。 我知道图像有效,因为我可以使用

Image.memory(base64Decode(captchaEncodedImgFetched))

现在,问题是我需要将此图像传递给Firebase ML Vision进行处理。

firebase_ml_vision有一个使用文件中的图像的示例

final File imageFile = getImageFile();
final FirebaseVisionImage visionImage = FirebaseVisionImage.fromFile(imageFile);`

但是我有一个base64编码的图像。

我尝试了以下方法

final FirebaseVisionImage visionImage = FirebaseVisionImage.fromBytes(
base64Decode(captchaEncodedImgFetched));

但它似乎需要FirebaseVisionImageMetadata()作为论据,但我对字节图像一无所知。

这个类需要更多的我不明白的参数。 例如,它需要一个size : Size(width, height)参数。图像不是应该已经有尺寸了吗?为什么需要再次指定?

现在我将其设置为Size(200, 50).然后是其他的,我不知道该向他们传递什么。例如,planeDatarawFormat

以下是这些文档:

https://pub.dev/documentation/firebase_ml_vision/latest/firebase_ml_vision/FirebaseVisionImageMetadata-class.html

https://pub.dev/documentation/firebase_ml_vision/latest/firebase_ml_vision/FirebaseVisionImagePlaneMetadata-class.html

https://pub.dev/documentation/firebase_ml_vision/latest/

FirebaseVisionImage.fromBytes需要FirebaseVisionImageMetadata哪个实习生需要FirebaseVisionImagePlaneMetadata。以下示例:

// Below example uses metadata values based on an RGBA-encoded 1080x1080 image
final planeMetadata = FirebaseVisionImagePlaneMetadata(
width: 1080,
height: 1080,
bytesPerRow: 1080 * 4,
);
final imageMetadata = FirebaseVisionImageMetadata(
size: Size(1080, 1080),
planeData: planeMetadata,
rawFormat: 'RGBA', 
);
final visionImage = FirebaseVisionImage.fromBytes(decoded, metadata);

以牺牲性能为代价的更简单的解决方法是将字节写入磁盘并从那里读取映像,如下所示:

File imgFile = File('myimage.png');
imageFile.writeAsBytesSync(decoded.ToList());
final visionImage = FirebaseVisionImage.fromFile(imageFile);

相关内容

  • 没有找到相关文章

最新更新