无法在Opencv 3.2.0中为VideoCapture设置后端

问题描述 投票:1回答:1

我喜欢用opencv捕捉USB网络摄像头提供的视频。为此,我尝试将VideoCapture类与v4l2后端一起使用。按照https://docs.opencv.org/3.2.0/d8/dfe/classcv_1_1VideoCapture.html处的示例,我通过以下方式调用构造函数:

VideoCapture vc(id + CAP_V4L2);

其中id表示我的相机(此处为0)。

为了检查是否成功,我做了这样的事情:

cout << vc.get(CAP_PROP_MODE)<<endl; // return 0 instead of the value of CAP_V4L2

我还确保使用V4L / V4L2编译opencv。 getBuildInformation()显示以下行:

[V4L / V4L2:使用libv4l1(版本1.14.2)/ libv4l2(版本1.14.2))

目前,我正在使用Ubuntu 18.04来宾系统和Ubuntu 18.04系统作为主机的Virtualbox 6.0.4。

这里是一个最小的例子:

int main() {
    int id = 0;
    VideoCapture vc(id + CAP_V4L2);
    if(!vc.isOpened()) {
        std::cerr << "Unable to open cam " << std::endl;
        exit(-1);    
    } 
    cout << vc.get(CAP_PROP_MODE) << " | " << CAP_V4L2 <<endl; // 0 | 200
}

我非常感谢您的帮助

c++ opencv v4l2
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.