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.
Maybe a direct conversion to Emgu Image is possible ?
I'm working in C# under VS2010.
Thanks.
SW
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
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);
回答2:
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);
}
回答3:
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>();