有谁知道如何让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;
}
非常感谢!