显示来自IP摄像机的已处理图像

时间:2011-05-13 08:42:44

标签: wpf image computer-vision emgucv ip-camera

我有一台提供图像的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至少显示上一张图像?

1 个答案:

答案 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方法应该这样做。)

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