Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
29.1.2010, 5:35
Post
#1
|
|
|
Новичок ![]() Группа: Пользователи Сообщений: 4 Регистрация: 28.1.2010 Пользователь №: 700 Репутация: 0
|
Я начал изучать OpenCV недавно, очень понравилось,
но я столкнулся с проблемой, захватываю видео с камеры а в результате получается видео с рассинхронным временем, оно длиннее/короче за реальное время записи. Вот пример кода: в результате получается алгоритм: в идеале задержка 40 мс дает ровно 25 кадров, но на захват обработку и сохранение тоже уходит время, в результате получается задержка между кадрами 40мс+обработка == неопределенное время задержки которое зависит от загрузки цпу а значит и неверно рассчитвыается FPS в результате видео записывается ровно в 25 кадров, но длительность видео не совпадает с реально записанным временем. Скажите как разобраться в этом, как обрабатывается нормализация продолжительности видео? |
|
|
|
31.1.2010, 12:12
Post
#2
|
|
![]() Администратор ![]() ![]() ![]() Группа: Главные администраторы Сообщений: 507 Регистрация: 29.4.2009 Пользователь №: 1 Репутация: 7
|
Видимо здесь нужно снять статистику по скорости работы программы, замерив среднее время цикла, а потом, исходя из полученных результатов, задавать задержку в параметре framerate.
Для замеров времени можно использовать код, находящийся в архиве:
duration_demo.zip ( 2,6 килобайт )
Number of downloads: 9
duration_src.zip ( 495 байт )
Number of downloads: 7-------------------- |
|
|
|
2.2.2010, 6:01
Post
#3
|
|
|
Новичок ![]() Группа: Пользователи Сообщений: 4 Регистрация: 28.1.2010 Пользователь №: 700 Репутация: 0
|
Smorodov, спасибо, попробую, но если вычесть среднее значение а видео надо снимать много чесов подряд при том нагрузка ЦП может быть разная и от этого будет меняться задержка,
неужели никто с таким не сталкивался? все примеры что нахожу в инете без учитывания такой задержки, странно в общем, буду пробовать |
|
|
|
2.2.2010, 13:39
Post
#4
|
|
![]() Администратор ![]() ![]() ![]() Группа: Главные администраторы Сообщений: 507 Регистрация: 29.4.2009 Пользователь №: 1 Репутация: 7
|
Есть еще вариант, захватывать и записывать кадры не в цикле, а по прерыванию мультимедиа таймера, он достаточно точно отмеряет интервалы, в отличие от обычного системного таймера, однако интервал должен быть взят с запасом, т.к. приоритет м.м. таймера достаточно высокий, и если функция прерывания будет требовать больше времени, чем интервал таймера, произойдет зависание системы.
-------------------- |
|
|
|
2.2.2010, 15:42
Post
#5
|
|
|
Новичок ![]() Группа: Пользователи Сообщений: 4 Регистрация: 28.1.2010 Пользователь №: 700 Репутация: 0
|
Есть еще вариант, захватывать и записывать кадры не в цикле, а по прерыванию мультимедиа таймера, он достаточно точно отмеряет интервалы, в отличие от обычного системного таймера, однако интервал должен быть взят с запасом, т.к. приоритет м.м. таймера достаточно высокий, и если функция прерывания будет требовать больше времени, чем интервал таймера, произойдет зависание системы. Спасибо, такой вариант хороший, думаю если устроить Frame Skipping то ничего зависать не будет. |
|
|
|
![]() ![]() |
|
Текстовая версия | Сейчас: 8.9.2010, 23:36 |