如何从System.Drawing.Image创建Emgu图像?

时间:2011-03-29 18:06:58

标签: image-processing drawing jpeg emgucv

我有一个源代码,它在内存流(Bytes)中给了我一个jpeg 我可以将它转换为System.Drawing.Image,但我不知道如何 把它转换成Emgu Image。

也许可以直接转换为Emgu Image? 我在VS2010下的C#工作 谢谢。
SW

4 个答案:

答案 0 :(得分:2)

您可以先将System.Drawing.Image对象转换为Bitmap,然后使用该位图创建一个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);

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

使用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>();

答案 3 :(得分:0)

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

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

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