Так что я на самом деле делаю проект дополненная реальность.
Я использую openCV, чтобы сделать снимок с 2 камеры.
Эти камеры не очень эффективны, я думаю, что их максимальная частота кадров составляет около 30 кадров в секунду.
Если я обновляю кадр камеры (методом чтения) в программе на каждом кадре, частота кадров приложения составляет около 25 кадров в секунду. Если я не обновлю это, это около 55 кадров в секунду.
Я полагаю, что эта задержка из-за openCV ждать нового кадра генерироваться камерами перед переходом к следующему шагу программы.
Но мне нужно, чтобы по крайней мере весь виртуальный объект отображался со скоростью 55 кадров в секунду для погружения Это способ сказать openCV, чтобы перейти к следующему вызову, если в VideoCapture объект?
И если нет никакого способа, есть ли другой кроссплатформенный API для более эффективного управления камерой?
Спасибо!
Я никогда не использую OpenCV в C ++, но я думаю, что это то же самое. Я использую OpenCV4Android и мне нужно что-то делать, когда входит фрейм, он будет реально замедлять fps, если вы поместите свою процедуру в функцию onCameraFrame () (я думаю, что она похожа на функцию read () в C ++), потому что только когда возвращение кадра, приходит следующий кадр
Мое решение — использовать другой поток для обработки кадра. В функции read () вы можете установить флаг, чтобы указать, что кадр находится в объекте videoCapture или нет, а затем использовать поток процесса, чтобы проверить флаг, если он есть, обработать его. FPS будет лучше.