Я пишу код C++/opencv для некоторых процедур обработки изображений и использую собственную веб-камеру моего Dell Precision 7730 для получения тестового видеовхода. Видеокарта — Quadro P5200.
Я начал в Windows 10, используя VSE 2015 и opencv 4.1.0. Там я могу захватывать видео с веб-камеры 1280x720 и отображать его со скоростью 30 кадров в секунду или с той скоростью, которую выдает камера.
Но недавно я перешел на Ubuntu 18.04 с Eclipse (установленным на втором SSD), потому что с нашей реальной внешней прототипной камерой, которая отправляет видео через пакеты UDP в порт Ethernet, Windows теряла слишком много принимаемых пакетов. (Это еще одна проблема, которую мы решим позже, но Ubuntu не вызывает потери пакетов — мы можем получать и отображать их со скоростью 30 кадров в секунду.)
Однако теперь в Ubuntu веб-камера ограничивается < 10 кадрами в секунду, используя по сути тот же код C++. Даже если я не делаю ничего, кроме захвата (cap >> Mat) и отображения (imshow), она часто опускается до 7,5 кадров в секунду.
Однако в приложении Ubuntu Cheese такой проблемы, похоже, нет, частота кадров составляет 30 кадров в секунду.
Кто-нибудь знает, что может происходить в Ubuntu, чтобы задушить частоту кадров веб-камеры в пользовательском приложении OpenCV? И как это исправить?
Обратите внимание, что я отключил переключаемую графику в BIOS для обеспечения стабильности Ubuntu, но думаю, что это может только помочь.