我有一台提供图像的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;
...
}
当我连接正常的30fps网络摄像头时,这可以正常工作。但是,当我通过浏览器访问时,IPCam的图像需要一秒钟才能到达此处。因此,与此同时,WPF没有显示任何内容,甚至没有显示处理过的前一个图像。
如何让WPF至少显示上一张图像?
答案 0 :(得分:1)
您可以使用Create (from Array)或Create (from IntPtr)将图像的缓冲区复制到相同格式的新BitmapSource图像(PixelFormat,Height,Width,stride),并在WPF的Image控件中显示该BitmapSource, 或者您可以use DirectX to do that faster(对于30fps(和1fps)BitmapSource方法应该这样做。)
另外,请考虑不在视图中使用事件,而是使用绑定和命令。