gstreamer critical error when trying to capture video using webcam python opencv

﹥>﹥吖頭↗ 提交于 2019-12-01 15:47:14

The following workaround has a reasonable chance of working:

cap = cv2.VideoCapture(0, cv2.CAP_V4L)

The ability to select backends was added in OpenCV 3, see the VideoCapture() docs.

The workaround switches the backend to V4L (from default GStreamer) for my OpenCV 3.4.4 build with GStreamer support on a 16.04 box. Here the output of the question's code with workaround after export OPENCV_VIDEOIO_DEBUG=TRUE:

[ WARN:0] VIDEOIO(cvCreateCameraCapture_V4L(index)): trying ...

[ WARN:0] VIDEOIO(cvCreateCameraCapture_V4L(index)): result=0x20b1470 ...

cap.isOpened
cap is opened

If the workaround does not work for you, you can check whether your OpenCV build supports V4L using print(cv2.getBuildInformation()). Here the relevant section for my build:

Video I/O:
  DC1394:                      YES (ver 2.2.4)
  FFMPEG:                      YES
    avcodec:                   YES (ver 56.60.100)
    avformat:                  YES (ver 56.40.101)
    avutil:                    YES (ver 54.31.100)
    swscale:                   YES (ver 3.1.101)
    avresample:                NO
  GStreamer:                  
    base:                      YES (ver 1.8.3)
    video:                     YES (ver 1.8.3)
    app:                       YES (ver 1.8.3)
    riff:                      YES (ver 1.8.3)
    pbutils:                   YES (ver 1.8.3)
  libv4l/libv4l2:              NO
  v4l/v4l2:                    linux/videodev2.h
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!