1

AForge.NET ライブラリを使用して、Web カメラから画像データを定期的に取得しています。デバッグ上の理由から、フィルター処理された画像を画面に描画する必要があります。現在、メインフォームに6つのWPF画像があり、毎秒、System.Drawing.Bitmapに変換してからBitmapSourceに変換するUnmanagedImageを提供するイベントを処理します-私のコードは次のようになります:

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 に答える