Opencv 3.2读取mpeg文件太慢了

时间:2017-06-04 18:07:40

标签: c++ opencv3.2

我正在阅读学习OpenCV 3的书并测试视频示例2.3。我可以编辑,编译和运行它,但问题是它立即关闭。

// DisplayPicture.cpp : Defines the entry point for the console application.
//

//#include "opencv2/opencv.hpp" // Include file for every supported OpenCV function 


#include "opencv2\imgproc\imgproc.hpp"
#include "opencv2\highgui\highgui.hpp"
#include <opencv2/videoio.hpp>

#include <stdio.h>
#include <string.h>

using namespace cv;
using namespace std;

int main(int argc, char** argv) {
    namedWindow("video3", WINDOW_AUTOSIZE);
    VideoCapture cap;
    cap.open( string(argv[1]));
    int tell = 0;
    Mat frame;
    for (;;) {
        cap >> frame;
        //waitKey(30);
        if (frame.empty())
        {
            break;
            //end of film
        }
        imshow("video3", frame);
    }
    return 0;
}

我发现我的电脑处理数据的速度太快了。它无法足够快地读取下一帧。 if (frame.empty())成为真正的程序达到break声明并结束。

通过在查看图像框之前添加30毫秒的waitkey,视频程序可以很好地工作。至少我可以观看视频。因为这个例子来自“圣经”。它应该工作,但不能用我的电脑。

我正在使用 nvidia gtx880m 运行 MSI gt72 2PE 计算机。不确定是否重要。

我认为添加waitKey(30)是不恰当的,所以我正在寻求有关可以采取哪些不同方式的建议。

0 个答案:

没有答案