从IP摄像头抓取非连续帧

时间:2012-07-16 16:10:47

标签: c opencv ffmpeg

我正在进行项目,我需要每秒(或两次)从IP摄像机检索帧并以某种方式处理它。 用

初始化捕获后
CvCapture* capture = cvCaptureFromFile(ipSource);

我从循环中获取帧,我引入一(或两)秒延迟 -

frame = cvQueryFrame(capture);

问题 - 我只获得连续帧(我想从缓冲区),而不是我尝试获取它的帧。 在我想要的那一刻,我该怎样做才能获得框架?

1 个答案:

答案 0 :(得分:0)

cvQueryFrame实际上会调用cvGrabFrame(),然后调用cvRetrieveFrame()。第一个函数从相机中检索图像并在内部存储它。第二帧实际上解压缩并返回IPLImage给你。您可以手动调用它并将处理器繁重的代码放在它们之间。

其他选项(快速和脏)是运行一个不同的线程,它会连续抓取帧。然后,您可以轻松获得最新的框架。

希望有所帮助..