【问题标题】:OpenCV - process a stream from usb camera in wince6OpenCV - 在 wince6 中处理来自 USB 摄像头的流
【发布时间】:2013-01-27 21:19:01
【问题描述】:

我需要处理来自 USB 摄像头的视频,但我不知道如何将流保存在内存中。我找到了一个在窗口中显示它的代码,但在它显示之前我找不到它的存储位置。 谁能帮我解决这个问题?

【问题讨论】:

  • 让我们看看一些代码,以便我们为您提供帮助。为了在 opencv 中显示图像(您说您正在这样做),您必须将图像存储在某种数据结构中,无论是 Mat 还是 IplImage* 或其他东西。你想处理它然后显示。给我们看一些代码。

标签: opencv camera usb windows-ce


【解决方案1】:

如果您check my other answer,您将看到函数cvQueryFrame() 从相机中检索帧并将其存储在color_frame 中,color_frame 是一个类型为IplImage* 的变量。 OpenCV 使用类型IplImage 来表示内存中的图像。当然,这个例子展示了如何使用 OpenCV 的 C 接口,所以如果你打算使用 C++ 接口,你必须查看cv::Mat

无论如何,从相机中检索帧并将它们保存在内存中以供以后使用需要您有一个缓冲机制来存储帧。我建议你研究一下循环缓冲区(又名ringbuffers),看看它们是如何工作的:

【讨论】:

  • 感谢您的回答。我阅读了这篇文章,代码运行并处理了视频。我试图在 wince 项目中使用它,但它 (cvCaptureFromCAM) 没有做任何事情。你有什么小窍门吗?
  • 你的 WinCE 上是否有任何应用程序可以成功显示来自相机的帧?
  • 是的,有。该应用程序由 wince builder 中的一些代码组成。我发现它使用directshow - 这就是我不知道如何到达缓冲区的原因。我读了很多directshow,但我不知道是否有办法从“变压器过滤器”中读取数据(或者,如何做到这一点)。
  • 你见过DirectShow with OpenCV吗?
  • 是的,我查过了,但没有找到答案。我找了很多关于它的信息,但没有成功。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多