【问题标题】:Convert HImage to byte[] as File.ReadAllBytes() does with .png将 HImage 转换为 byte[],就像 File.ReadAllBytes() 对 .png 所做的那样
【发布时间】:2023-02-16 13:53:28
【问题描述】:
HalconDotNet.HOperatorSet.ReadImage(out HObject image, srcPath);
//...
//(graphic stuff)
//...
HalconDotNet.HOperatorSet.WriteImage(imagePart, "png", 0, tmpImgPath); // skip these steps
Image = File.ReadAllBytes(path)                                        // skip these steps

这段代码被执行了数千次。最后两个步骤只是为了在 Halcon 和 .NET 之间进行兼容性步骤,因为我不知道如何组合它们。

我需要的是一种将 HImage(HObject) 转换为 byte[] 的方法,就像 WriteImage() + File.ReadAllBytes(path) 一样。最后一点很重要,因为这段代码会为图像分类模型生成输入。

由于模型是使用File.ReadAllBytes(path)从磁盘加载的数据进行训练的,我假设我需要在使用模型时以相同的方式准备数据。当我使用 File.ReadAllBytes() 读取 100*100 彩色 PNG 时,我得到的不是 30000 字节,而是更少,所以我假设数据仍然被压缩,并进一步假设我需要在使用模型时保证类似的数据.

这个问题与this one 有一些重叠,但我需要一个 byte[] 而不是位图,只是无法让它工作。

【问题讨论】:

    标签: c# machine-learning halcon


    【解决方案1】:

    你能试一下吗?

    public static byte[] ImageToByte(Image image)
    {
        using (var stream = new MemoryStream())
        {
            image.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
            return stream.ToArray();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-04-04
      • 2014-08-24
      • 2017-09-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-27
      • 1970-01-01
      • 2013-01-07
      • 2012-09-12
      相关资源
      最近更新 更多