2

我有一个通过火线连接的高分辨率相机。SDK 让我可以将帧抓取到字节缓冲区中。例如:

unsigned char *buffer = new unsigned char[size];
GetFrameBuffer(cameraHandle, buffer);

由于 API 的性质,需要连续抓取帧 (20+ fps) 以显示实时视图。现在,我想在我的 WPF UI 中显示它。我可以想到几种方法,但我需要帮助确定选择哪种方法!

想法

  1. 通过互操作更新的属性Source不断更新Image元素。
  2. HWNDHwndHost中托管基于自定义的控件。当消息泵空闲时,图像将被更新。
  3. 在 DirectShow 中编写一个源过滤器,使用某种计时逻辑连续读取缓冲区 - 从而可以使用MediaElement显示实时视图。

显然,我想最小化 CPU 负载。

问题归结为:

在 WPF 中,我如何使用原始 API显示来自火线连接的实时流GetFrameBuffer

4

1 回答 1

0

我认为最简单的方法是第一种。只需更新图像源。如果您只想显示它,则不需要为此使用 directshow 过滤器。但如果你也想捕捉它,DirectShow 过滤器是最好的方法!

更新图像源是一项简单的任务。一个很好的例子是.net 的 Mjpeg 解码器。您只需用您自己的抓取器逻辑替换 Mjpeg 阅读器/解析器。

于 2013-03-19T07:49:07.890 回答