Доступ к камере с помощью OpenCV (через GStreamer)

Я пытаюсь разработать приложение, которое должно анализировать видеопоток с камеры MIPI (5MP). Поэтому я использую gstreamer, чтобы получить доступ к видео через OpenCV. Я попробовал следующий конвейер, и он работает:

imxv4l2videosrc device="/dev/video0" ! autovideosink

Но когда я пытаюсь использовать его с OpenCV, это дает некоторые ошибки.

VideoCapture cap("imxv4l2videosrc device=\"/dev/video0\" ! autovideosink");

OpenCV Error: Unspecified error (GStreamer: cannot find appsink in manual pipeline
) in cvCaptureFromCAM_GStreamer, file /root/OpenCV/opencv/modules/videoio/src/cap_gstreamer.cpp, line 759
VIDEOIO(cvCreateCapture_GStreamer (CV_CAP_GSTREAMER_FILE, filename)): raised OpenCV exception:

/root/OpenCV/opencv/modules/videoio/src/cap_gstreamer.cpp:759: error: (-2) GStreamer: cannot find appsink in manual pipeline
 in function cvCaptureFromCAM_GStreamer

Затем я попытался использовать следующий конвейер, и он тоже не работает:

VideoCapture cap("imxv4l2videosrc device=\"/dev/video0\" ! appsink");

ERROR: unrecognized std! 0 (PAL=ff, NTSC=b000
ERROR: v4l2 capture: unsupported ioctrl!
GStreamer Plugin: Embedded video playback halted; module imxv4l2videosrc0 reported: Internal data flow error.
ERROR: v4l2 capture: unsupported ioctrl!
OpenCV Error: Unspecified error (GStreamer: unable to start pipeline
) in cvCaptureFromCAM_GStreamer, file /root/OpenCV/opencv/modules/videoio/src/cap_gstreamer.cpp, line 832
VIDEOIO(cvCreateCapture_GStreamer (CV_CAP_GSTREAMER_FILE, filename)): raised OpenCV exception:

/root/OpenCV/opencv/modules/videoio/src/cap_gstreamer.cpp:832: error: (-2) GStreamer: unable to start pipeline
 in function cvCaptureFromCAM_GStreamer

Версия GStreamer: 1.0 Версия OpenCV: 3.2

Какая часть мне здесь не хватает? Или мой подход неверен?

1 ответ

Решение

Вот ответ на мой вопрос (с помощью @Alper Kucukkomurler)

Вы можете получить доступ к камере MIPI через OpenCV (с GStreamer) с

VideoCapture cap("imxv4l2videosrc device=\"/dev/video0\" ! videoconvert ! appsink");

Также, если вы хотите изменить разрешение ввода, imx-capture-mode параметр может быть использован, который имеет imxv4l2videosrc элемент. Например,

imxv4l2videosrc imx-capture-mode=5 ! <other elements>
Другие вопросы по тегам