使用OpenCV访问摄像头(通过GSTREAMER)

Access Camera using OpenCV (Via GStreamer)

本文关键字:通过 GSTREAMER 摄像头 OpenCV 访问 使用      更新时间:2023-10-16

我正在尝试开发一个应用程序,该应用程序应分析MIPI摄像机(5MP(的视频流。因此,我正在使用GSTREAMER来使用OpenCV获取视频feed访问它。我尝试了以下管道,并且正在工作:

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.0OPENCV版本:3.2

我在这里缺少什么作品?还是我的方法错了?

这是我问题的答案(有@alper kucukkomurler的帮助(

您可以使用

的OpenCV(带GSTREAMER(访问MIPI摄像机
VideoCapture cap("imxv4l2videosrc device="/dev/video0" ! videoconvert ! appsink");

另外,如果要更改输入的分辨率,则可以使用imx-capture-mode参数,即imxv4l2videosrc元素。例如,

imxv4l2videosrc imx-capture-mode=5 ! <other elements>