.net 如何将emgu CV Mat类型转换为可以用作图像源的类型?
我正在使用emgu CV进行计算机视觉任务,需要动态操作图像并显示结果。我找不到一种方法将Mat类型转换为与ImageSource兼容的类型,以便在WPF图像控件上显示它。这些示例都是针对2.x的,我使用的是3.1。很多东西对3.x不起作用。我找了几个小时,但找不到有效的解决办法。有没有简单的解决办法?谢谢。好的。我找到了一条路。我把它贴在这里,以防其他人也有同样的问题。基本上,我使用ToBitmap方法将其转换为位图,然后使用BitmapImage从MemoryStream(使用bitmap.Save方法转储)中读取它。您可以这样使用它.net 如何将emgu CV Mat类型转换为可以用作图像源的类型?,.net,wpf,emgucv,.net,Wpf,Emgucv,我正在使用emgu CV进行计算机视觉任务,需要动态操作图像并显示结果。我找不到一种方法将Mat类型转换为与ImageSource兼容的类型,以便在WPF图像控件上显示它。这些示例都是针对2.x的,我使用的是3.1。很多东西对3.x不起作用。我找了几个小时,但找不到有效的解决办法。有没有简单的解决办法?谢谢。好的。我找到了一条路。我把它贴在这里,以防其他人也有同样的问题。基本上,我使用ToBitmap方法将其转换为位图,然后使用BitmapImage从MemoryStream(使用bitmap.
private void ProcessFrame(object sender, EventArgs arg)
{
if (_capture != null && _capture.Ptr != IntPtr.Zero)
{
Mat _frame = new Mat();
_capture.Retrieve(_frame, 0);
Dispatcher.BeginInvoke(new ThreadStart(delegate
{
image_control.Source = ConvertBitmap(_frame.Bitmap);
}));
}
}
public BitmapImage ConvertBitmap(System.Drawing.Bitmap bitmap)
{
MemoryStream ms = new MemoryStream();
bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
BitmapImage image = new BitmapImage();
image.BeginInit();
ms.Seek(0, SeekOrigin.Begin);
image.StreamSource = ms;
image.EndInit();
return image;
}
您应该发布工作代码以帮助所有人。