Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在Qt框架中从视频中逐个获取帧?_C++_Qt_Opencv - Fatal编程技术网

C++ 如何在Qt框架中从视频中逐个获取帧?

C++ 如何在Qt框架中从视频中逐个获取帧?,c++,qt,opencv,C++,Qt,Opencv,我用QMediaPlayer获得了一个视频输入,然后我想一个接一个地读取帧,并用其他视觉算法处理所有帧。但我不知道如何从视频中一个接一个地获取帧,并访问帧的每个像素 在OpenCV库中,我可以很容易地用cv::VideoCapture和cv::Mat解决这个问题 cv::VideoCapture capture(filename); cv::Mat img; capture >> img; // 'img' contains the first frame of the video

我用QMediaPlayer获得了一个视频输入,然后我想一个接一个地读取帧,并用其他视觉算法处理所有帧。但我不知道如何从视频中一个接一个地获取帧,并访问帧的每个像素

在OpenCV库中,我可以很容易地用cv::VideoCapture和cv::Mat解决这个问题

cv::VideoCapture capture(filename);
cv::Mat img;

capture >> img; // 'img' contains the first frame of the video.
capture >> img; // 'img' contains the second frame of the video.
如果有人已经处理过这种问题,请帮助我


非常感谢。

您可以编写自己的实现并重写其 方法逐帧处理视频。 然后,您必须通过设置
QMediaPlayer
的视频输出


有关如何访问帧数据的详细信息,请参阅文档。

您可以编写自己的实现并覆盖其 方法逐帧处理视频。 然后,您必须通过设置
QMediaPlayer
的视频输出


有关如何访问帧数据的详细信息,请参阅文档。

建议:可以使用OpenCV。这将使播放视频和处理视频变得更容易,而无需QImage->Mat转换


为了使用OpenCV+Qt处理视频,必须创建一个连接到QTimer信号的QThread。QTimer信号每隔几毫秒向工作线程中的插槽发送一次信号,以从VideoCapture获取下一个视频帧并处理数据

建议:您可以使用OpenCV。这将使播放视频和处理视频变得更容易,而无需QImage->Mat转换


为了使用OpenCV+Qt处理视频,必须创建一个连接到QTimer信号的QThread。QTimer信号每隔几毫秒向工作线程中的插槽发送一次信号,以从VideoCapture获取下一个视频帧并处理数据

如果OpenCV对您有效,那么使用OpenCV没有问题当然:)如果OpenCV对您有效,那么使用OpenCV没有问题当然:)您不会得到
QImage
,但是原始数据,因此,可以将OpenCV代码插入重写的
QAbstractVideoSurface::present
方法,并避免使用
QTimer
。使用该方法,您不会得到
QImage
,而是原始数据,因此可以将OpenCV代码插入重写的
QAbstractVideoSurface::present
方法,并避免使用
QTimer