#opencv #gstreamer
#opencv #gstreamer
Вопрос:
Я делаю несколько руководств по Gstreamer, и мне интересно, почему люди используют серверную часть Gstreamer для своих проектов OpenCV.
Это потому, что это быстрее, чем обычно Videocapture()
?
Или он использует аппаратное ускорение, например, Cuda?
Я не знаю, как Videocapture()
именно это работает, поэтому любая помощь будет оценена по достоинству!
Комментарии:
1. Он выполняет выборку и декодирование кадров в фоновом режиме и использует аппаратное ускорение для кодирования / декодирования, если оно доступно и настроено правильно
Ответ №1:
1 — «почему люди используют серверную часть Gstreamer для своих проектов OpenCV»
Для gstreamer не существует серверного API по умолчанию. По умолчанию серверный перечислитель VideoCapture
is CAP_ANY
. Как говорится в документации:
OpenCV автоматически выбирает и использует первую доступную серверную часть (apiPreference=cv::CAP_ANY).
2 — «Это потому, что это быстрее, чем обычный Videocapture ()?»
Не существует обычного (по умолчанию) серверного API, как объяснялось ранее. Сравнение скорости также может быть изменяемым api для api. Вот весь внутренний API для VideoCapture
3 — «Или он использует аппаратное ускорение, например, Cuda?»
Cuda не использует gstreamer, он совместим с ffmpeg.
Подробную информацию о методологии потоковой передачи opencv вы можете найти здесь.