c - 从 IP 摄像机抓取非连续帧

标签 c opencv ffmpeg

我正在开发一个项目,我需要每秒(或每两秒)从 IP 摄像机检索帧并以某种方式处理它。 初始化捕获后

CvCapture* capture = cvCaptureFromFile(ipSource);

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

frame = cvQueryFrame(capture);

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

最佳答案

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

其他选项(快速但肮脏)是运行不同的线程,它将连续抓取帧。然后您就可以轻松获取最新的帧。

希望有帮助..

关于c - 从 IP 摄像机抓取非连续帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11508251/

相关文章:

C 相当于 applescript "tell X to open Y"

c++ - 如何实现线程安全的功能

python - 如何在opencv python中获取视频的前一帧

python - OpenCV:如何仅访问蓝色像素?

ffmpeg - 使用 ffmpeg 录制时视频时长错误

c++ - 是否可以使用内存缓冲区(或 PE 资源)来支持只读 SQLite 数据库?

c - 编写 C 函数 sprod (n,x,y) 返回 2 个一维浮点型数组的标量积

python - 在PNG图片OpenCV2 Python上画一条线

ffmpeg - 使用 FFMPEG 提取第一个非黑色关键帧

Android:如何使用硬件加速将图像流编码为 h264?