Im работает над проектом с opencv и C++. Версия Opencv - 3.1. Настройка HW - Nvidia gt460 и Intel i7 3820, 64 ГБ. Я пытаюсь добиться установки нескольких камер, где все камеры будут объединены в одну большую мозаику. На ранних стадиях, возможно, 4x4 позже еще больше. После этого я буду анализировать эту мозаику и отслеживать несколько объектов.Создание мозаики каналов камеры в opencv без значительных задержек
Проблема заключается в том, что когда я создаю камеру с командой захвата в Opencv, а затем сохраняю ее в матрице, анализирую ее и показываю. Существует большая проблема с FPS уже с двумя каналами камеры. Я тестировал три USB-канала, а также несколько потоков UDP или RTSP. При использовании USB задержка не является самой большой проблемой, но FPS - это что-то вроде разделения между каналами. И использование метода stream дает мне низкий FPS и высокую задержку (около 15 секунд). Я также понял, что между камерами есть другая задержка, даже если у меня есть камеры, указывающие на одно и то же.
Есть ли кто-нибудь, кто мог бы помочь мне или решить подобную проблему? Проблема Opencv в том, что он не может анализировать больше прямых каналов одновременно?
Heres мой код сращивание:
merged_frame = Mat(Size(1280, 960), CV_8UC3);
roi = Mat(merged_frame, Rect(0, 0, 640, 480));
cameraFeed.copyTo(roi);
roi = Mat(merged_frame, Rect(640, 0, 640, 480));
cameraFeed2.copyTo(roi);
roi = Mat(merged_frame, Rect(0, 480, 640, 480));
cameraFeed3.copyTo(roi);
roi = Mat(merged_frame, Rect(640, 480, 640, 480));
cameraFeed4.copyTo(roi);
Вы воссоздаете 'merged_frame' в каждом цикле? Подход в основном правильный, просто избегайте ненужных копий или создания матов. – Miki
Я бы установил поток для каждой задачи захвата камеры. Когда захват сделан, отправьте сообщение в основной поток, чтобы обновить большой кадр. – Ripi2
Спасибо за ваши ответы, я уже перевел создание merged_frame из цикла, и он немного улучшил производительность, и теперь я попытаюсь создать больше потоков, чтобы увидеть, будет ли он работать еще лучше. –