@Tim06ka
Java developer

Как отобразить последовательность кадров на экране с заданным FPS без пропусков?

Доброго времени суток!

Есть задача записать камерой кадры, отображаемые на проекторе.
Камера и проектор аппаратно синхронизированы.
Отображение кадров происходит с помощью cv::imshow (без openGL).
Видеозахват дает 50fps, но не равномерно (кадры выдаются по схеме 37мс -> кадр -> 3мс -> кадр. Поэтому цикл видеозахвата в качестве часов использовать не удается, происходят разрывы изображения (tearing) и вообще мрак какой-то.

При использовании программного таймера (std::chrono) периодически теряются кадры (скорее всего эффект стробоскопа).

Подскажите пожалуйста как отобразить последовательность кадров на экране с заданным FPS без пропусков. (Например MPC-HC так почти умеет при включенном VSYNC, хотя порой теряет кадр)
  • Вопрос задан
  • 3103 просмотра
Решения вопроса 1
bak
@bak
Забуферезуйте пару кадров. Воспользуйтесь fifo очередью, начинайте отображать когда в ней будет 2-3 кадра. По таймеру берёте кадр из очереди и показываете, видеозахват кладёт в очередь кадры когда захочет.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы