Всегда сообщайте версию программного обеспечения, которую вы используете: какую версию OpenCV вы используете для этого?Ваша версия может быть старой, поэтому, если возможно, обновите ее до самой последней версии.
Если ваш видеофайл является частью какого-то другого более крупного видео, эта информация может быть правильной, поскольку:
CV_CAP_PROP_POS_MSEC - film current position in milliseconds or video capture timestamp
OpenCV может просто читать все эти вещи из заголовка файла, что, очевидно, неправильно.Это может произойти, если кто-то использовал топор (или другой средневековый инструмент), чтобы убрать этот фрагмент из исходного видео.
Вам следует попробовать сделать видео, которые вы сделали, и вы знаете, что они не были подделаны.
В худшем случае вам придется реализовать эти функции самостоятельно.Не важно.
РЕДАКТИРОВАТЬ: @misha Сначала я не заметил, что вы используете:
CvCapture *capture = cvCaptureFromFile(argv[1]);
Замените его на cvCaptureFromAVI () если можете, и ВСЕГДА проверьте возвращаемое значение вызовов OpenCV:
CvCapture *capture = cvCaptureFromAVI(argv[1]);
if(!capture)
{
printf("!!! cvCaptureFromAVI failed (file not found?)\n");
return -1;
}
Несколько дней назад я поделился кодом, что использует OpenCV для чтения видеофайлаа затем сохранить кадры в виде изображений JPG на диске .Он также сообщает текущий FPS с использованием традиционного cvGetCaptureProperty(capture, CV_CAP_PROP_FPS);
, поэтому вам будет интересно взглянуть на это.Проверьте это.
РЕДАКТИРОВАТЬ:
Вы также должны проверить эту тему о количестве кадров с помощью OpenCV;
ByКстати, я только что обновил некоторые библиотеки в своей системе Ubuntu и перекомпилировал OpenCV-2.1.0.tar.bz2 (используя cmake ).Я изменил свой исходный код (который использует cvCaptureFromAVI () ) для печати материала с использованием вашего метода отладки в каждом кадре.Кажется, это работает:
* Filename: sequence.mp4
* FPS: 59
...
...
...
17 00:00:567.000000
18 601/33371 601.000000
18 00:00:601.000000
19 634/33371 634.000000
19 00:00:634.000000
20 668/33371 668.000000
20 00:00:668.000000
21 701/33371 701.000000
21 00:00:701.000000
22 734/33371 734.000000
22 00:00:734.000000
23 768/33371 768.000000
23 00:00:768.000000
24 801/33371 801.000000
24 00:00:801.000000
25 835/33371 835.000000
25 00:00:835.000000
26 868/33371 868.000000
26 00:00:868.000000
27 901/33371 901.000000
27 00:00:901.000000
28 935/33371 935.000000
...