cvGetCaptureProperty всегда возвращает 0 для CV_CAP_PROP_FRAME_COUNT! - PullRequest
3 голосов
/ 31 августа 2009

Это фрагмент кода от O'Reilly Learning Opencv,

cvNamedWindow("Example3", CV_WINDOW_AUTOSIZE);
g_capture = cvCreateFileCapture(argv[1]);
int frames = (int) cvGetCaptureProperty(g_capture, CV_CAP_PROP_FRAME_COUNT);
if (frames != 0) {
    cvCreateTrackbar("Position", "Example3", &g_slider_postion, frames, onTrackbarSlide);
}

Но, к сожалению, cvGetCaptureProperty всегда возвращает 0. Я искал группу opencv в Yahoo, обнаружил ту же проблему.

Ответы [ 4 ]

4 голосов
/ 07 сентября 2009

О, я понял. Я нашел этот фрагмент кода в примерах кодов Learning OpenCV:

/*
OK, you caught us.  Video playback under linux is still just bad.  Part of this is due to FFMPEG, part of this
is due to lack of standards in video files.  But the position slider here will often not work. We tried to at least
find number of frames using the "getAVIFrames" hack below.  Terrible.  But, this file shows something of how to
put a slider up and play with it.  Sorry.
*/
//Hack because sometimes the number of frames in a video is not accessible.
//Probably delete this on Widows
int getAVIFrames(char * fname) {
    char tempSize[4];
    // Trying to open the video file
    ifstream  videoFile( fname , ios::in | ios::binary );
    // Checking the availablity of the file
    if ( !videoFile ) {
      cout << "Couldn’t open the input file " << fname << endl;
      exit( 1 );
    }
    // get the number of frames
    videoFile.seekg( 0x30 , ios::beg );
    videoFile.read( tempSize , 4 );
    int frames = (unsigned char ) tempSize[0] + 0x100*(unsigned char ) tempSize[1] + 0x10000*(unsigned char ) tempSize[2] +    0x1000000*(unsigned char ) tempSize[3];
    videoFile.close(  );
    return frames;
}
1 голос
/ 20 декабря 2010

У меня была такая же проблема. Он говорит, что будет работать на Windows, но это не так. Я думаю, это потому, что я использую Dev-C ++, а Dev-C ++ использует gcc. Хотя я не уверен, в этом ли причина.

0 голосов
/ 11 марта 2012

Хуже того, у меня не было этой проблемы в Windows 7, а потом, через несколько дней, у меня был тот же видеофайл. Нет рифмы или причины.

0 голосов
/ 01 февраля 2011

У меня, похоже, нет этой проблемы в версии linux (той, которая была установлена ​​после установки ROS), но я продолжаю сталкиваться с ней в OSX. Я подумал, что это связано с версией OpenCV, которую я использовал (я установил linux довольно недавно), поэтому я установил OpenCV 2.2 на свой Mac, но проблема сохраняется.

Кто-нибудь знает, было ли это полностью исправлено в последней версии хранилища?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...