Захват видео: кадр всегда пустой — opencv

#c #macos #opencv #video

#c #macos #opencv #Видео

Вопрос:

Я работаю с OpenCV версии 2.4.9 и на Mac OSX. Я написал этот код для загрузки и отображения видео на моем рабочем столе. Но, похоже, это никогда не работает. Я всегда получаю вывод как «пустой кадр». Таким образом, он не жалуется на чтение видео с помощью VideoCapture.Он НЕ может захватывать какие-либо кадры, и, следовательно, «кадр» всегда ПУСТ. Есть идеи, в чем может быть проблема? Примечание: я пробовал оба способа захвата кадра — прокомментировал как попытку 1 и попытку 2.

 int main(int argc, const char * argv[])
{
    Mat frame;
    VideoCapture capture_ir("/Users/shreyatandon/Desktop/resize_ir.avi");


    if ( !capture_ir.isOpened() )  // if not success, exit program
    {
        cout << "Cannot open the video file" << endl;
        return -1;
    }

    for (;;){
       // capture_ir.read(frame); //try1
          capture_ir>>frame;       //try2
        if(frame.empty()){
            std::cerr<<"frame is empty"<<std::endl;
            break;
        }
        imshow("", frame);

        waitKey(10);

            break;
    }

    return 0;
}
  

Комментарии:

1. Я знаю, что в Windows ваши пути к файлам не будут работать, они должны быть \ вместо / . Я не знаю, так ли это для Mac

2. Если путь был неправильным, он выдал бы мне вывод как «Не удается открыть файл». Но все равно спасибо! Это / для mac .

Ответ №1:

Просто заставил это работать.

 Mat current_frame;
VideoCapture video("video.avi");
while(true)
{
    video.read(current_frame);
    imshow("Image",current_frame);
}
  

Если у вас по-прежнему возникают проблемы с использованием формата avi, посмотрите ваши ссылки на библиотеки ffmpeg и ит-зависимости. Я попытался установить его с нуля, используя homebrew, и он работает без проблем. Приветствия