Как создать образ Эмгу из System.Drawing.Image? - PullRequest
2 голосов
/ 29 марта 2011

У меня есть источник, который дает мне JPEG в потоке памяти (в байтах).
Я могу преобразовать его в System.Drawing.Image, но я не знаю, как
преобразовать его в Emgu Image.

Возможно прямое преобразование в Emgu Image возможно?
Я работаю в C # под VS2010.
Спасибо.
SW

Ответы [ 3 ]

2 голосов
/ 24 июня 2011

Вы можете сначала преобразовать объект 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);
1 голос
/ 30 марта 2011

Вы можете преобразовать байты массива в 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);         
}
0 голосов
/ 15 августа 2012

Используя решение 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>();
...