C++ 使用OpenCV播放视频以纠正速度

C++ 使用OpenCV播放视频以纠正速度,c++,opencv,C++,Opencv,我在播放视频文件方面有问题,为什么它是慢动作? 我怎样才能使它保持正常速度 #include"opencv2/opencv.hpp" using namespace cv; int main(int, char**) { VideoCapture cap("eye.mp4"); // open the default camera if (!cap.isOpened()) // check if we succeeded

我在播放视频文件方面有问题,为什么它是慢动作? 我怎样才能使它保持正常速度

#include"opencv2/opencv.hpp" 
using namespace cv; 

int main(int, char**) 
{ 
    VideoCapture cap("eye.mp4"); 
    // open the default camera 
    if (!cap.isOpened()) 
        // check if we succeeded 
        return -1; 

    namedWindow("Video", 1); 
    while (1) 
    { 
        Mat frame; 
        cap >> frame; 
        imshow("Video", frame); 
        if (waitKey(10) == 'c') 
            break; 
    } 
    return 0; 
}

VideoCapture
不是为播放而构建的,它只是一种从视频文件或摄像机中抓取帧的方法。其他支持播放的库,如GStreamer或Directshow,它们设置了控制播放的时钟,以便可以将其配置为以尽可能快的速度播放或使用原始帧速率


在代码片段中,帧之间的间隔来自读取帧所需的时间和
waitKey(10)
。尝试使用
waitKey(0)
,它至少应该播放得更快。理想情况下,您可以使用
waitKey(1/fps)

尝试添加
cap.set(cap\u PROP\u fps,一些值)在while循环之前。这将改变视频的fps(如果支持)等待键(0)等待直到按下一个键。你是对的。它可能是
waitKey(1)
,因为它需要获取“c”键。否则,只需删除
waitKey()
。我已尝试删除waitKey并将其设置为(1),但速度仍然非常慢。这可能与视频文件有关吗?您是否尝试过其他视频、其他格式和其他分辨率?另外,您是否检查了CPU/RAM的使用情况?它不是饱和了吗?你在哪个操作系统上?OpenCV使用ffmpeg,尝试使用ffplay播放视频,可能ffmpeg有问题。另外,您是否正在运行调试或发布(优化)代码?