Я просмотрел тонны потоков в OpenCV и Gstreamer и просто не могу решить проблему с моей ошибкой. Я пытаюсь открыть конвейер Gstreamer в OpenCV. Я собрал OpenCV с GStreamer, и на шаге CMake написано «ДА», что указывает на успешную сборку OpenCV. Команда для получения потока отлично работает из командной строки, однако она просто отображает фрейм и зависает в OpenCV.
Мой синтаксис для сервера:
gst-launch-1.0 v4l2src device="/dev/video0" ! video/x-raw,format=I420,width=640,height=480,framerate=15/1 ! jpegenc ! rtpjpegpay ! udpsink host=<IP Address> port=5000
Мой синтаксис в OpenCV для клиента (C ++):
Mat frame;
//create video capture from video camera
VideoCapture cap("udpsrc port=5000 ! application/x-rtp,encoding-
name=JPEG,payload=26 ! rtpjpegdepay ! jpegdec ! autovideosink ! appsink");
cap.set(CV_CAP_PROP_FRAME_WIDTH, 640);
cap.set(CV_CAP_PROP_FRAME_HEIGHT, 480);
for(;;)
{
cap >> frame;
char c = (char)waitKey(1);
//![display]
imshow(window_name, frame);
frame.release();
}
Ошибка:
Плагин GStreamer: воспроизведение встроенного видео остановлено; модуль
autovideosink0-actual-sink-xvimage сообщил: окно вывода было закрыто
Ошибка OpenCV: неопределенная ошибка (GStreamer: невозможно запустить конвейер)
в icvStartPipeline, файл
/home/dev/Downloads/OpenCV/opencv-3.0.0/modules/videoio/src/cap_gstreamer.cpp,
строка 383 завершается, вызывается после броска экземпляра
‘cv :: Exception’ что (): / home / dev / Загрузки / OpenCV / opencv-
3.0.0 / modules / videoio / src / cap_gstreamer.cpp: 383: ошибка: (-2) GStreamer: невозможно запустить конвейер в функции icvStartPipeline
Пожалуйста, предоставьте любую помощь, которую я прошел по крайней мере через 20 сообщений стека, и я не ближе к тому, когда я начал, за исключением того, что Gstreamer был включен в OpenCV. Я даже пробовал разные версии OpenCV.
Спасибо
Ограничение VideoCapture («порт udpsrc = 5000! Application / x-rtp, имя-кодировки = JPEG, полезная нагрузка = 26! Rtpjpegdepay! Jpegdec! Videoconvert! Appsink»);
После долгих поисков документации Gstreamer сегодня я решил проблему. Добавление видеоконвертера решило проблему. Согласно документации Gstreamer, видеоконвертер автоматически конвертирует данные в подходящий для приложения формат. Это позволяет правильно читать его в OpenCV VideoCapture.
Других решений пока нет …