Добавить обработку OpenCV в видеопоток gstreamer

Я пытаюсь заставить OpenCV обрабатывать фрейм в середине канала gstreamer.

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

v4l2src ! ffmpegcolorspace ! jpegenc ! appsink name=sink

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

appsrc name=src ! jpegdec ! xvimagesink

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

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

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

8
задан SMiLE 14 January 2011 в 02:09
поделиться