Я новичок в OpenCV и пытаюсь запустить простую программу, которая читает файл .avi и отображает его кадр за кадром в окне. Моя система - OSX El Capitan. Вот мой код:
#include "opencv2/objdetect/objdetect.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/core/core.hpp"
#include <iostream>
#include <stdio.h>
using namespace std;
using namespace cv;
int main( int argc, const char** argv )
{
Mat frame;
VideoCapture cap("crs01.avi");
if(!cap.isOpened()){ // check if we succeeded
cout << "Video not loaded!!" << endl;
return -1;
} else {
cout << "Loaded!!" << endl;
}
int count = cap.get(CV_CAP_PROP_FRAME_COUNT);
for(int i = 0; i < count; i++){
// while(true) {
cap >> frame;
if(!frame.empty()){
imshow("edges", frame);
} else {
cout << "EMPTY" << endl;
}
if(waitKey(30) >= 0)
break;
}
cap.release();
return 0;
}
Однако программа всегда возвращает мне пустые кадры. Он может печатать «Загружен», но после этого продолжает печатать «ПУСТО». Я пробовал эту программу на встроенной камере, например, VideoCapture cap (0);, а также для чтения других файлов .avi, и она отлично работает в обоих случаях. Я также попытался запустить отладчик, и оказалось, что после строки «cap >> frame» фрейм действительно пуст.
Кто-нибудь может мне помочь? Связана ли эта проблема с системой Mac? Заранее спасибо!