Я только что написал простой пример чтения видео с openCV2.3.1, но мне кажется, что я все равно не могу открыть avi-видео: (
VideoCapture capture("guitarplaying.avi");
if(!capture.isOpened()){
std::cout<<"cannot read video!\n";
return -1;
}
Mat frame;
namedWindow("frame");
double rate = capture.get(CV_CAP_PROP_FPS);
int delay = 1000/rate;
while(true)
{
if(!capture.read(frame)){
break;
}
imshow("frame",frame);
if(waitKey(delay)>=0)
break;
}
capture.release();
Я установил точку останова в std :: cout << "не могу читать видео! \ N"
и обнаружил, что он останавливается здесь каждый раз. Так почему же видео avi не открывается? Спасибо!
В OpenCV 2.4.4: есть только opencv_ffmpeg244.dll (релиз dll), а не opencv_ffmpeg244d.dll (отладочная dll)
Так что попробуйте в режиме компиляции релиза!
Я просто добавляю к этому, так как я провел больше времени, чем я хотел бы признать. Невозможность открыть файл вызвала массу странных исключений.
Если вы обнаружите, что абсолютные пути работают, а относительные пути не работают, еще одна вещь, которую нужно проверить, - убедиться, что рабочий каталог установлен правильно.
В Visual Studio это Свойства проекта (Свойства конфигурации) -> Отладка -> Рабочий каталог. Я обнаружил, что мой установлен в «$ (ProjectDir)» по умолчанию, когда я действительно хотел «$ (OutDir)».