【发布时间】:2016-12-07 19:18:09
【问题描述】:
我正在读取一个视频文件,即使我没有对图像进行任何处理,它也比文件的实际 FPS (59 FPS @1080p) 慢:
using namespace cv;
using namespace std;
// Global variables
UMat frame; //current frame
int main(int argc, char** argv)
{
VideoCapture capture("myFile.MP4");
namedWindow("Frame");
capture.set(CAP_PROP_FPS, 120); //not changing anything
cout>>capture.get(CAP_PROP_FPS);
while (charCheckForEscKey != 27) {
capture >>frame;
if (frame.empty())
break;
imshow("Frame", frame);
}
}
即使我尝试将 CAP_PROP_FPS 设置为 120,它也不会改变文件的 fps,当我得到 (CAP_PROP_FPS) 时,我仍然得到 59.9...
当我阅读视频时,实际结果或多或少是 54 FPS(即使使用 UMat)。
有没有办法以更高的 FPS 速率读取文件?
我也在opencv问答网站上问过他问题:http://answers.opencv.org/question/117482/change-fps-on-video-capture-from-file/
只是因为我的电脑太慢了吗?
【问题讨论】:
-
在互联网上搜索“双缓冲”,一个线程正在写入缓冲区而另一个线程正在读取缓冲区的概念。可以使用多个缓冲区来调整速度。
-
从文件中读取,FPS 只是您可以使用的元数据。
VideoCapture尽可能快地解码帧。 -
@ThomasMatthews 谢谢我去检查
-
@DanMašek,谢谢,但是为什么使用普通的 videoReader 我可以得到更快的显示(例如 VLC)?
标签: c++ opencv video frame-rate