Когда я снимаю изображения с камеры проецируемых изображений с помощью openCV через 'cvQueryFrame', у меня часто возникает непреднамеренный артефакт: линия сканирования проектора.То есть, поскольку я не могу точно определить время, когда cvQueryFrame захватывает изображение, полученное изображение не соответствует постоянному обновлению 30 Гц проектора.Результатом является то, что типичная горизонтальная полоса, знакомая тем, кто включил видеокамеру на экран телевизора.
Если не прибегать к аппаратной синхронизации, у кого-нибудь был какой-то успех с приближенным (например, «достаточно хорошим») неформальнымСинхронизация проектор-камера в openCV?
Ниже приведены два решения, которые я рассматриваю, но надеялся, что это достаточно распространенная проблема, которая может существовать изящное решение.Мои менее изящные мысли:
Добавьте ползунок в cvWindow, отображающий видео для пользователя, чтобы управлять смещением синхронизации от 0 до 1/30 секунды, затем установитетаймер очереди в этом интервале.Всякий раз, когда нужен кадр, вместо непосредственного вызова cvQueryFrame, я бы запросил обратный вызов для выполнения cvQueryFrame при следующем срабатывании таймера.Таким образом, теоретически пользователь сможет использовать ползунок для уменьшения артефакта линии сканирования, при условии, что разрешение таймера будет достаточным.
После получения кадра через 'cvQueryFrame',исследовать кадр контрольной горизонтальной полосы путем поиска дельты значений HSV для вертикального столбца пикселей.Естественно, это будет работать только тогда, когда фотографируемый объект содержит проверочную полосу однородного цвета при плавно меняющемся освещении.
Я использовал несколько камер с OpenCV, последняя из которых - Canon SLR (7D).