【问题标题】:How to create Emgu Image from System.Drawing.Image?如何从 System.Drawing.Image 创建 Emgu 图像?
【发布时间】:2021-02-13 00:26:03
【问题描述】:

我有一个源,它在内存流(字节)中给了我一个 jpeg。
我可以将其转换为 System.Drawing.Image 但我不知道如何
将其转换为 Emgu 图像。

也许直接转换为 Emgu Image 是可能的?
我在 VS2010 下使用 C#。
谢谢。
短波

【问题讨论】:

    标签: image-processing drawing jpeg emgucv


    【解决方案1】:

    您可以先将 System.Drawing.Image 对象转换为位图,然后使用该位图创建 Emgu.CV.Image。 代码如下:

    System.Drawing.Image image;
    Bitmap bmpImage = new Bitmap(image);
    Emgu.CV.Image = new Emgu.CV.Image<Bgr, Byte>(bmpImage);
    

    更好,如果你有内存流,可以直接从内存流中获取位图

    MemoryStream ms;
    Bitmap bmpImage = new Bitmap(ms);
    Emgu.CV.Image = new Emgu.CV.Image<Bgr, Byte>(bmpImage);
    

    【讨论】:

    • 自 Emgu 4.2.0 版以来,这将不再起作用。现在有一个扩展方法
    【解决方案2】:

    您可以使用如下代码将数组字节转换为 Emgu Image...

    public Image<Bgr, Byte> CreateImageFromBytesArray(byte[] bytes)
    {
         MemoryStream ms = new MemoryStream(bytes);
         Bitmap bmpImage = (Bitmap) Image.FromStream(ms);
         return new Image<Bgr, byte>(bmpImage);         
    }
    

    【讨论】:

    • 您需要将 Image.FromStream 转换为位图,否则将无法编译。
    【解决方案3】:

    使用 ps2010 解决方案,我写了这个来从 http: 获取图像:

    try
    {                
        using (WebClient client = new WebClient())
        {                    
            data = client.DownloadData("http://LINK TO PICTURE");
        }       
    }
    catch (Exception ex)
    {
        // error treatment
    }
    
    MemoryStream ms = new MemoryStream(data);
    Bitmap bmpImage = new Bitmap(Image.FromStream(ms));
    Emgu.CV.Image<Bgr, Byte> currentFrame = new Emgu.CV.Image<Bgr, Byte>(bmpImage);
    gray = currentFrame.Convert<Gray, Byte>();
    

    【讨论】:

      【解决方案4】:

      自 Emgu 4.2.0 版以来,没有以位图为参数的图像构造函数。现在有位图的扩展方法:

      Bitmap bmpImage = new Bitmap(SomeStream);
      var img = bmpImage.ToImage<Bgr, byte>();
      

      历史上的一些细节:http://www.emgu.com/wiki/index.php/Version_History

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-16
        • 1970-01-01
        • 2012-08-01
        • 2021-09-07
        • 2014-01-26
        • 1970-01-01
        相关资源
        最近更新 更多