如何在 MJPG opencv 中从网络摄像头捕获视频

如何在 MJPG opencv 中从网络摄像头捕获视频

我已经买了两个天才脸部摄像头 1000x相机并尝试设置立体相机,v4l2-ctl相机的输出如下:

ioctl: VIDIOC_ENUM_FMT
    Index       : 0
    Type        : Video Capture
    Pixel Format: 'YUYV'
    Name        : YUYV 4:2:2

    Index       : 1
    Type        : Video Capture
    Pixel Format: 'MJPG' (compressed)
    Name        : Motion-JPEG

如你所见,MJPG 像素格式是受支持的,并且这种像素格式是必需的,但当我尝试从两个网络摄像头捕获视频时,VIDIOC_STREAMON: No space left on device第二个摄像头仍然出现错误,我只能获得 320x240 分辨率的立体视频!我尝试了以下两个方法,但对我不起作用。

  1. v4l2-ctl --set-fmt-video=width=640,height=480,pixelformat=1
  2. 设置FOURCC为 MJPG 会导致HIGHGUI ERROR: V4L: Property <unknown property string>(6) not supported by device错误。

    # setting the `FOURCC` will cause the 
    # `HIGHGUI ERROR: V4L: Property <unknown property string>(6) not supported by device`
    for p in ports:
        self.caps.append(cv2.VideoCapture(p))
        self.caps[-1].set(cv2.cv.CV_CAP_PROP_FOURCC('M','J','P','G'));
    

我该怎么做才能以相对合适的分辨率获得正确的结果?

PS:我的所有 USB 端口都连接到单个控制器!

答案1

您是否尝试过使用和从源代码构建-D WITH_V4L=ONOpenCV -D WITH_LIBV4L=ON

相关内容