Я пытаюсь, чтобы OpenCV обрабатывал кадр в середине канала gstreamer.Добавьте обработку OpenCV к потоку видео gstreamer
У меня есть одна GStreamer труба генерации потока, посылая его в appsink для OpenCV код получить:
v4l2src ! ffmpegcolorspace ! jpegenc ! appsink name=sink
И еще одна труба, загрузив ее с appsrc (к которому OpenCV посылает данные) и выводит его на экран :
appsrc name=src ! jpegdec ! xvimagesink
Я открываю каждый кадр с запросом выдвижная буфера на раковине и обработать его с OpenCV, а затем использовать кнопочный буфер на СРК. Я делаю все это на Python.
По какой-то причине это не работает (ошибка сегментации).
Но я не пытаюсь это исправить; в любом случае это ужасно неэффективно. Мне просто интересно, есть ли лучший способ заставить OpenCV обрабатывать кадр, прежде чем он достигнет выходной раковины?
Поскольку вы хотите больше, чем может предложить gst-opencv, если вы не против писать свою логику в C (или C++), возможно, вам стоит попробовать написать ее как плагин для gst? Вы можете взять один из источников плагина gst-opencv в качестве отправной точки – sinelaw
Другое дело - ваш пример, похоже, просто захватывает v4l2, и я думаю, что API HighGui API opencv поддерживает это уже (или, по крайней мере, v4l без «2»). это было бы самым простым решением, если вам действительно не нужен gstreamer. – sinelaw
1. Хорошее предложение, я могу это сделать. 2. Вы правы, я мог бы использовать HighGUI в этом случае, но v4l2src использовался просто в качестве примера. В фактическом приложении я намерен получить видеопоток из источника tcp, поэтому я не могу реализовать все это в OpenCV. – SMiLE