2011-05-13 49 views
1

我有一台IP摄像机提供图像。这些图像然后通过EmguCV进行处理,然后我想要显示处理后的图像。显示来自IP摄像机的处理图像

要显示的图像,我用这个代码:

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

Hooks_DispatcherInactive(...) 
{ 
    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至少显示以前的图像?

+1

不幸的是,那不是我的控制。它虽然有很多抖动。平均约为1000毫秒,但也可能是300或1700 ...... – Loy 2011-05-13 11:29:51

回答

1

您可以将图像的缓存复制到相同格式的一个新的BitmapSource图像(的PixelFormat,高度,宽度,步幅)使用Create (from Array)Create (from IntPtr)并显示在WPF的图像控件的BitmapSource, 或者你可以use DirectX to do that faster(支持30fps(和1fps)BitmapSource方法应该这样做)。

此外,请考虑不使用视图中的事件,而是使用绑定和命令。