How to create Emgu Image from System.Drawing.Image?

前端 未结 3 1552
没有蜡笔的小新
没有蜡笔的小新 2021-01-15 05:32

I have a source that gives me a jpeg in memory stream (Bytes).
I can convert it to System.Drawing.Image but I don\'t know how
to convert it to Emgu Image.

M

相关标签:
3条回答
  • 2021-01-15 06:08

    Using ps2010 solution, I had wrote this to get image from a 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>();
    
    0 讨论(0)
  • 2021-01-15 06:14

    You can convert your array bytes to Emgu Image<,> with a code like the following...

    public Image<Bgr, Byte> CreateImageFromBytesArray(byte[] bytes)
    {
         MemoryStream ms = new MemoryStream(bytes);
         Bitmap bmpImage = (Bitmap) Image.FromStream(ms);
         return new Image<Bgr, byte>(bmpImage);         
    }
    
    0 讨论(0)
  • 2021-01-15 06:16

    You can first convert System.Drawing.Image object to a Bitmap and then create an Emgu.CV.Image with that bitmap. The code is as follows:

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

    Better, if you have a memory stream, you can get a bitmap directly from the memory stream

    MemoryStream ms;
    Bitmap bmpImage = new Bitmap(ms);
    Emgu.CV.Image = new Emgu.CV.Image<Bgr, Byte>(bmpImage);
    
    0 讨论(0)
提交回复
热议问题