我正在try 将用pytorch_mobile包预测的二进制掩码转换为可以在我的应用程序中显示的图像.

我收到的预测是一个一维列表,其中包含我的模型输出的预测,这些预测对于分配给背景的像素是负值,对于分配给感兴趣区域的像素是正值.在此之后,我创建了一个列表,将值0赋给所有先前的负值,将255赋给所有先前的正值,从而生成一个一维列表,该列表包含值0或255,具体取决于像素的分类.

图像预测是512×512像素的大小,并且列表的长度随后是262,144.

我如何才能将此列表转换为可以保存到存储或通过Ffltter用户界面显示的图像?

以下是我当前的代码:

    customModel = await PyTorchMobile
        .loadModel('assets/segmentation_model.pt');

    result_list = [];
    File image = File(filePath);

    List prediction = await customModel.getImagePredictionList(image, 512, 512);

    prediction.forEach((element) {
      if (element >0){
        result_list.add(255);
      }else if(element <= 0){
        result_list.add(0);
      }
    });

    result_list_Uint8 = Uint8List.fromList(result_list);

推荐答案

以下几点应该能起到作用.只需使用Image.setPixelSafe设置图像中的每个像素,然后将其转换为带有encodePngImage.memory的Ffltter Image小部件.

import 'package:image/image.dart' as im;

...

final img = im.Image(512, 512);
for (var i = 0, len = 512; i < len; i++) {
  for (var j = 0, len = 512; j < len; j++) {
    final color = result_list_Uint8[i * 512 + j] == 0 ? 0 : 0xffffff;
    img.setPixelSafe(i, j, 0xff000000 | color);
  }
}

final pngBytes = Uint8List.fromList(im.encodePng(img));
photoImage = Image.memory(pngBytes);

Flutter相关问答推荐

在Flutter中,CachedNetworks Image不工作(不从CachedData加载)

如何防止alert 对话框在收到通知时出现在某个flutter页面中

Flutter:如何从Bottom Navigator中删除此内容

ShaderMask上的文本渐变问题

自定义ItemBuilderFlutter

为什么我的PIN字段在第一次打字时不显示数字?

我的flutter代码显示一个小部件被认为是死代码,为什么?

Ffltter:发布版本中的Path NotFoundException

当键盘在抖动中打开时,如何才能看到包装在SingleChildScrollView中的列中的最后一个小工具?

如何让经过Firebase身份验证的用户能够将Zip文件上载到Firebase云存储?

升级到Ffltter 3.16后,应用程序栏、背景 colored颜色 、按钮大小和间距都会发生变化

Flutter Android Google Sign-in error:ApiException:10在确认软件包名称、SHA-1 fingerprint 和设置同意页面后出现异常

如何在 Flutter 中设计像 zomato 应用程序一样的搜索字段?

Flutter 需要 Xcode 14 或更高版本

Flutter:使用 GlobalKey 访问 BlocProvider

如何在 flutter 中使用带有有效负载数据的重定向来执行 firebase 推送通知.?

状况不佳 - Cubit

如何在 Flutter 中将 ScaffoldMessenger 中的 Snackbar 显示为 Widget?

Flutter - 检测手指何时进入容器

如何做到这一点,当我们在 textified 中输入 ab 然后将 applebanana 显示为一个单词?飘飘然