Всем доброго времени суток! Столкнулся с проблемой. Тестирую код из книги Mastering OpenCV глава 8. И не пойму по какой причине видео с вебкамеры начинает тормозить (задержка примерно 3 сек) и искажаться через определенное время (10-30 сек) после запуска режима распознавания лица. То есть в режимах когда идет сбор лиц или просто режим определения, картинка не тормозит и не искажается, но как только включаю режим распознавания лица начинаются проблемы (файл прикрепил).
1) Пробовал запихать цикл распознавания в таймер. не помогло.
2) Пробовал запускать в отдельном потоке (выставлял разные Sleep(1-30)). не помогло.
3) Пробовал выводить изображение как через функцию imshow, так и на форму (MFC C++), тоже не дало результатов.
4) Утечка памяти замечена не была.
Если кто-нибудь сталкивался с подобной проблемой, подскажите плиз как ее решить?
Да, с выдачей fps что-то не так, но вручную выставленное 15 тоже пойдёт.
Почему плывёт уже понятно? Из-за высокой загрузки. Видимо, не укладывается в интервал 60 мс.
Что же делать? Вариантов несколько.
1. Использовать обработку в отдельном потоке: получил кадр, засунул его в очередь, а второй поток её разгребает и, если она становится слишком большой, выкидывает некоторые кадры без обработки.
2. Использовать многоядерность для алгоритмов. То есть найти медленное место и распараллелить хотя бы с помощью openmp.
3. Ускорить медленное место с помощью задействования GPU.
Я бы 100% реализовал пункт 1, а остальные при необходимости, если размер очереди будет сильно расти.