【问题标题】:Showing processed images from an IP camera显示来自 IP 摄像机的已处理图像
【发布时间】:2011-05-13 08:42:43
【问题描述】:

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

【问题讨论】:

  • 不幸的是,这不在我的控制之下。它确实抖动很多。平均值约为 1000 毫秒,但也可能是 300 或 1700 毫秒...

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多