2016-07-10 2 views
-1

У меня есть VideoCapture, тогда я выполняю некоторые действия, такие как обнаружение объектов. Теперь я достиг стадии, на которой я хочу получить прошедшее время видео в течение определенного времени, например, когда объект обнаружен. Каков наилучший/самый надежный способ получить прошедшее время?Получить время, прошедшее с видео

Важно то, что видео не работает на оригинальной скорости из-за падения FPS, потому что я выполняю некоторую обработку изображений. Поэтому проблема заключается в том, что я хочу иметь возможность получить время в обработанном видео, а затем иметь возможность отслеживать время в видеосигнале orignal, и оно должно быть в одной последовательности. (Пример: я получаю время 05:30, тогда он должен находиться в том же месте в оригинальном видео, если я поеду в 05:30 в VLC и т. Д.).

Надеюсь, я достаточно ясен в объяснении. Я пробовал CV_CAP с различными вариантами, но я не понимаю, как я мог бы получить время. Использование этого будет что-то вроде:

if (this) 
    Get time elapsed 

Любые идеи и все помощь оченьоценили!

+0

Непонятно: происходит ли это в реальном времени или эта пост-обработка видео, которое может происходить полностью независимо от исходной частоты кадров? – kfsone

+0

После обработки. –

ответ

2

Ну, если вы знаете исходную скорость FPS и номер текущего кадра, то это тривиально: elapsed_time_in_seconds = frame_number/original_fps.

0

OpenCV декодирует видео в его кадры независимо от кодека видеофайла. Модуль, отвечающий за это, - ffmpeg, который является беспорядком и выходит за рамки обработки изображений в содержании исследований. Я имею в виду, что OpenCV не волнует, если вы не сможете получить реальные fps кодека. Как следствие, нет гарантированного способа получения таймингов, которые вы задаете. Как сказал @Jesper, попробуйте удачу с оригиналом_fps (который является постоянным числом, и, как вы можете знать, видео может иметь разные FPS, например, потоковое видео в реальном времени изменяет свои fps в соответствии с доступной пропускной способностью сети, чтобы догнать время).

Это может показаться глупым, но самый надежный способ сделать вывод о времени в OpenCV - на самом деле опечатать отметку времени на кадре во время захвата видео.

Другим решением может быть установка предусловий/требований для вашего программного обеспечения. Например. требуют, чтобы видеовход был постоянным 30 FPS.

Наконец, как и все остальные, используйте номер кадра для указания времени.