1

画像を提供するIPカメラを持っています。これらの画像はEmguCVで処理され、処理された画像を表示したいと思います。

画像を表示するには、次のコードを使用します。

Window1(){
     ...
     this.Dispatcher.Hooks.DispatcherInactive 
         += new EventHandler(Hooks_DispatcherInactive);
}

Hooks_DispatcherInactive(...)
{
    Next()
}

Next()呼び出しは、画像処理メソッドを呼び出し、画像を表示します(すべきです)。

MatchResult? result = survey.Step();
if (result.HasValue)
{
    Bitmap bit = result.Value.image.Bitmap;
    ImageSource src = ConvertBitmap(bit);
    show.Source = src;
    ...
}

これは、通常の30fpsWebカメラを接続すると正常に機能します。しかし、IPCamの画像は、ブラウザを介してアクセスした場合も、ここに到達するまでに1秒以上かかります。そのため、その間、WPFには何も表示されず、処理された前の画像も表示されません。

WPFに少なくとも前の画像を表示させるにはどうすればよいですか?

4

1 に答える 1

1

Create(配列から)またはCreate(IntPtrから)を使用して、画像のバッファーを同じ形式(PixelFormat、Height、Width、stride)の新しいBitmapSource画像にコピーし、そのBitmapSourceをWPFのImageコントロールに表示するか、DirectXを使用できます。これをより速く行うには(30fps(および1fps)の場合、BitmapSourceアプローチで行う必要があります)。

また、ビューでイベントを使用せず、代わりにバインディングとコマンドを使用することを検討してください。

于 2011-05-13T10:20:48.963 に答える