2013-04-18 2 views
1

Я только что установил OpenCV на моем Mac с OSX 10.8.3, я установил его с варева:OpenCV не отображается видео в Mac OSX

brew install opencv 

и версия 2.4.3

>>> ls /usr/local/Cellar/opencv 
2.4.3 

Я пытаюсь отобразить видео. Формат - .asf, а кодек - MJPG (я могу открыть его только с помощью VLC, см. Скриншот)

Количество кадров (если распечатывается в opencv или отображается в VLC) одинаково.

Но если я запустил программу opencv, отобразится только первый кадр. другой нет .. почему ??

Это OpenCV код

#include <iostream> 
#include <string> 
#include <sstream> 

#include <opencv2/core/core.hpp> 
#include <opencv2/imgproc/imgproc.hpp> 
#include <opencv2/highgui/highgui.hpp> 

using namespace std; 
using namespace cv; 


int main(int argc, char *argv[]) { 

    Mat frame; 
    int numframe = 0; 

    if (argc != 2) { 
     cout << "Not enough parameters" << endl; 
     return -1; 
    } 

    const string source = argv[1]; 
    VideoCapture capture(source); 
    namedWindow("video", CV_WINDOW_AUTOSIZE); 

    if (!capture.isOpened()) { 
     cout << "Could not open " << source << endl; 
     return -1; 
    } 

    for(;;) { 
     capture >> frame; 
     numframe++; 
     if (frame.empty()) { 
      cout << "frame empty.." << endl; 
      break; 
     } 
     cout << numframe << endl; 
     imshow("video", frame); 
    } 

    return 0; 
} 

enter image description here

ответ

1

После:

imshow("video", frame); 

вызов:

waitKey(10); 

Это обязательное для вызова cv::waitKey(), чтобы отобразить окно. Параметр - это количество миллисекунд, которое будет оставаться открытым. Эта функция возвращает код ASCII клавиши, нажатой в течение этого времени.

В идеале вы должны заменить 10 на номер, который отображает рамки в правой части FPS. Другими словами: cv::waitKey(1000/fps);

1

Попробуйте скомпилировать OpenCV с поддержкой FFMPEG поддержкой для того, чтобы иметь доступ к большему количеству кодеков. Если пиво не может этого сделать, установите ffmpeg и cmake с варевом, затем захватите источники OpenCV на github и перекомпилируйте их.

+1

Как я могу узнать, есть ли поддержка ffmpeg? потому что я так думаю – nkint

+0

Я вижу, что ваша проблема уже решена. Однако для справки в будущем вы можете использовать функцию cv :: getBuildInformation() для получения сведений о скомпилированных модулях. – sansuiso

Смежные вопросы