Я некоторое время работал над проектом компьютерного зрения, используя opencv на Raspberry Pi, Передача через UDP видео и информацию в приложение на базе Desktop Qt.
Я был последние несколько днейзастрял на проблеме, и я не могу решить ее самостоятельно.Дело в том, что мое приложение opencv на моем raspberry pi 3 работало отлично, но мне нужно было использовать gstreamer для отправки вывода приложения через UDP в мое приложение на базе Qt на рабочем столе.
Opencv принимает конвейеры gstreamer в качестве входных и выходных данных с помощью видеозахвата и VideoWriter, но для этого нужно создать opencv с поддержкой gstreamer, и здесь я столкнулся с проблемой.Хотя я собираю opencv 3.4.3 на raspberry pi с поддержкой gstreamer, я больше не могу использовать типичную шапку Videocapture (0) для открытия камеры по умолчанию, она зависает только здесь.Приложение не выдает никакой ошибки или чего-либо еще, оно просто ничего не открывает и сохраняет в этом состоянии.Я знаю, что проблема здесь, потому что у меня есть несколько отладочных сообщений в приложении, и оно застряло в этом.Кроме того, если я использую конвейер gstreamer в качестве ввода вместо 0 (камера по умолчанию), это работает.Проблема только с камерой по умолчанию, может V4l испортил я не знаю.Отдельное использование конвейеров gstreamer на терминале работает отлично.
Немного изучив, я понял, что gst-plugins-bad, который мне нужен, использует некоторые библиотеки opencv, и я увидел на форуме nvidia, что это вызываетИз-за этого возникли проблемы с досками Jestson, но я не нашел четкого решения.Я не знаю, переопределяет ли gst-plugins-bad мою установку opencv, и в этом причина (gst-plugins-bad использует более старую версию opencv).В любом случае, я попытался установить opencv 3.4.3 после gst-plugins-bad также безуспешно.Похоже, что V4l не работает должным образом на моей сборке opencv 3.4.3.
С другой стороны, я пытался собрать opencv 3.4.3 на настольном компьютере Ubuntu 18.04 вместе с gstreamer 1.14.1, и он работает нормально, и понимает, что видеозахват cap (0) в порядке, как и ожидалось, и я могу без проблем запустить приложение, предназначенное для raspberry pi, даже добавив конвейеры gstreamer для ввода и вывода, все в порядке.Я думаю, что raspberry gstreamer - это версия 1.10.
Я собираюсь попробовать собрать и установить из исходного кода gstreamer 1.14.1, который работает вместе с opencv на моем настольном компьютере Ubuntu, на моем raspberry pi, но это будетдолго и больно.Я был бы очень признателен, если бы кто-нибудь смог пролить немного света на то, что здесь происходит.
Большое спасибо.