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;
    ...
}

当我连接一个普通的 30fps 网络摄像头时,这很好用。但是,IPCam 的图像需要一秒钟才能到达这里,当我通过浏览器访问它们时也是如此。因此,与此同时,WPF 什么也没有显示,甚至没有显示之前处理过的图像。

如何让 WPF 至少显示以前的图像?

4

1 回答 1

1

您可以使用Create(来自 Array)Create(来自 IntPtr)将图像的缓冲区复制到具有相同格式(PixelFormat、Height、Width、stride)的新 BitmapSource 图像中,并在 WPF 的 Image 控件中显示该 BitmapSource,或者您可以使用 DirectX更快地做到这一点(对于 30fps(和 1fps),BitmapSource 方法应该这样做)。

另外,考虑不要在视图中使用事件,而是使用绑定和命令。

于 2011-05-13T10:20:48.963 回答