我有一个源代码,它在内存流(Bytes)中给了我一个jpeg
我可以将它转换为System.Drawing.Image,但我不知道如何
把它转换成Emgu Image。
也许可以直接转换为Emgu Image?
我在VS2010下的C#工作
谢谢。
SW
答案 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>();