我正在使用AForge.NET库定期从我的网络摄像头获取图像数据。出于调试原因,我必须将过滤后的图像绘制到屏幕上。 目前我的主窗体上有6个WPF图像,每一秒我处理一个事件,它给我一个UnmanagedImage,我将其转换为System.Drawing.Bitmap然后转换为BitmapSource - 我的代码看起来像这样:
private void OnImageFiltered(object sender, FilterEventArgs e)
{
var bitmapSource = e.UnmanagedImage.ToManagedImage().ToBitmapSource();
pictureBox.Source = bitmapSource;
}
但正如我之前所说,我有6张图像,它会减慢整个程序的速度。 我怎样才能让它更快?
我的ToBitmapSource扩展方法在这里:
public static BitmapSource ToBitmapSource(this System.Drawing.Image source)
{
System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(source);
var bitSrc = bitmap.ToBitmapSource();
bitmap.Dispose();
bitmap = null;
return bitSrc;
}
答案 0 :(得分:0)
很抱歉写了一个答案,但由于声誉不佳,我无法发表评论。
如果问题仍然存在,请使用Freeze
方法使BitmapSource只读,并因此可以传递给其他线程。