如何在Qt中抓取视频帧?

时间:2015-06-12 10:26:36

标签: c++ image qt4 video-processing opticalflow

我是Qt的新手,我只知道基础知识:创建接口和连接插槽。简而言之,我的知识根本不是深刻的。

我需要打开一个视频文件并捕获它的所有帧以获得R,G,B通道,然后再处理光流(这已经完成)帧到帧以最终在窗口上表示它。

是否可以使用Qt获取视频帧?我已经研究了很多,但没有找到任何结论。

2 个答案:

答案 0 :(得分:6)

您可以使用QMediaPlayer来实现此目的。

  1. 实例化QMediaPlayer
  2. QAbstractVideoSurface
  3. 进行子类化
  4. 通过QMediaPlayer::setVideoOutput将您的实施设置为媒体播放器的输出。
  5. 向媒体播放器提供所需的文件,如果视频已成功加载,最终会在QAbstractVideoSurface::present(const QVideoFrame & frame)的实施时调用QAbstractVideoSurface。然后,您可以访问QVideoFrame中的频道和所有内容,并在小部件上绘制框架。

答案 1 :(得分:1)

我不知道为什么我不能包含必要的Qt头来处理帧(它们似乎总是有未解析的依赖关系而有些不存在)所以我转向OpenCV 3.0并且这样做:

tab+nb

它完全符合我的目的,所以我没有继续研究。

非常感谢。