我在Flutter中加载了张量流Lite模型,但是在将图像传递到模型进行预测时遇到了一些问题。预测方法允许任何对象通过,但是Flutter像我使用Image Picker类一样将图像读取为文件,并且我找不到将文件类型转换为图像的方法,因此我可以将其转换为(28,28,1)模型需要的。
谢谢,我们将不胜感激。
Uint8List imageToByteListFloat32(
img.Image image, int inputSize, double mean, double std) {
var convertedBytes = Float32List(1 * inputSize * inputSize * 3);
var buffer = Float32List.view(convertedBytes.buffer);
int pixelIndex = 0;
for (var i = 0; i < inputSize; i++) {
for (var j = 0; j < inputSize; j++) {
var pixel = image.getPixel(j, i);
buffer[pixelIndex++] = (img.getRed(pixel) - mean) / std;
buffer[pixelIndex++] = (img.getGreen(pixel) - mean) / std;
buffer[pixelIndex++] = (img.getBlue(pixel) - mean) / std;
}
}
return convertedBytes.buffer.asUint8List();
}
classifyImage(File image) async {
var output = await Tflite.runModelOnBinary(
binary: imageToByteListFloat32(image, 224, 127.5, 127.5),// required
numResults: 10, // defaults to 5
threshold: 0.05, // defaults to 0.1
asynch: true // defaults to true
);
setState(() {
_loading = false;
_outputs = output;
});
}`
答案 0 :(得分:0)
您可以使用flutter图片库从文件中获取图片。
import 'package:image/image.dart' as imageLib;
var image = imageLib.decodeImage(await imageFile.readAsBytes());
这个来自shaquian的github仓库可能对您有帮助!
https://github.com/shaqian/flutter_tflite/blob/master/example/lib/main.dart