Добавьте некоторую обработку OpenCV в видеопоток gstreamer - PullRequest
7 голосов
/ 14 января 2011

Я пытаюсь, чтобы OpenCV обрабатывал кадр в середине канала gstreamer.

У меня есть один канал gstreamer, генерирующий поток и отправляющий его в appsink для получения кода OpenCV для получения:

v4l2src ! ffmpegcolorspace ! jpegenc ! appsink name=sink

И еще один канал, получающий его из appsrc (в который OpenCV отправляет данные) и выводящий его на экран:

appsrc name=src ! jpegdec ! xvimagesink

Я открываю каждый кадр с запросом pull-buffer на приемнике и обрабатываю егос OpenCV, затем используйте push-буфер на src.Я делаю все это в Python.

По какой-то причине это, похоже, не работает (ошибка сегментации).

Но я на самом деле не пытаюсь это исправить;это ужасно неэффективно в любом случае.Мне просто интересно, есть ли лучший способ, чтобы OpenCV обрабатывал кадр до того, как он достигнет выходного приемника?

Ответы [ 2 ]

2 голосов
/ 14 января 2011

Вы пробовали gst-opencv ? Он поставляет несколько примитивов opencv в качестве плагинов gstreamer.

РЕДАКТИРОВАТЬ : Похоже, что оно объединено в gst-plugins-bad , а ссылка выше устарела.

1 голос
/ 15 июля 2014

Я знаю, что прошло несколько лет с момента вашего первоначального вопроса, но для справки: OpenCv может напрямую открывать конвейеры Gstreamer.См. (Само-) ответ в Использование пользовательской камеры в OpenCV (через GStreamer) для примера.

И, кстати, OpenCv 3.0 (основная ветка) фактически включает в себя поддержку gstreamer 1.0.

...