1

我正在使用 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;
}
4

1 回答 1

0

很抱歉写了一个答案,但由于我的声誉低,我还不能发表评论。

如果问题仍然存在,请使用该Freeze方法将 BitmapSource 设置为只读,从而可以传递给不同的线程。

于 2013-08-19T13:30:22.917 回答