OpenCV VideoCapture没有获得更多帧

时间:2016-02-21 23:18:10

标签: c++ opencv video video-capture

有谁知道如何让OpenCV从视频文件中获取所有帧?

我一直试图从视频文件(特别是.wmv文件)中抓取帧,但在大多数视频中,我最终以“nan”作为我的帧速率,它只从我的视频获得一帧不认为还有更多。但是,至少在一个视频上,它会成功并获得正确的帧速率。我试图手动设置帧速率,但这不起作用。

有一点需要注意的是,它看起来不起作用的视频非常短(约5秒钟)。但是,我没有彻底测试这个理论,因为我没有很多视频(只有大约10个视频)。

重复此操作所需的最低代码如下:

int main(int argc, char** argv)
{
    VideoCapture capture;
    char* video = argv[1];
    int flag = arg_parse(argc, argv);
    capture.open(video);
    //capture.set(CV_CAP_PROP_FPS, 25); // Trying to set frame rate.
    std::cout << "frame rate: " << capture.get(CV_CAP_PROP_FPS) << std::endl;
    if(!capture.isOpened()) {
        fprintf(stderr, "Could not initialize capturing..\n");
        return -1;
    }
    while(true) {
        Mat frame;
        int i, j, c;

        // get a new frame
        capture >> frame;
        std::cout << "GOT FRAME!" << std::endl;
        if(frame.empty()) {
            std::cout << "breaking..." << std::endl;
            break;
        }
    }
    return 0;
}

非常感谢!

0 个答案:

没有答案