0
我使用ffmpeg支持構建opencv,這是我的代碼片段,用於讀取視頻並遍歷幀。爲什麼opencv可以打開視頻,但無法從中檢索幀?
if (argc != 3) {
std::cout<<"Usage: exe input_video_filename skip_frames \n"<<std::endl;
return 0;
}
char* video_fn = argv[1];
int skip_frames = atoi(argv[2]);
VideoCapture cap;
if(!cap.open(video_fn))
{
std::cout<<"error reading video"<<video_fn<<std::endl;
return -1;
}
Mat frame,gray;
int i = 0;
double score = 0;
vector<double> scores;
while(true)
{
if(!**cap.retrieve(frame)**)
{
std::cout<<"error retrieve frame"<<std::endl;
break;
}
if(i%skip_frames)
{
cvtColor(frame,gray,CV_BGR2GRAY);
double sc = compute_cpbdm(gray);
std::cout<<sc<<std::endl;
scores.push_back(sc);
}
}
程序成功讀取在行cap.open(video_fn)的視頻,但不能在該行以檢索VideoCapture幀如果(!cap.retrieve(幀))。我嘗試過使用mp4和avi,但總是失敗。是否有人遇到過類似的問題?如何解決它?非常感謝!
感謝凸顯代碼(同樣的事情讀) – berak 2013-02-20 11:15:32