Невозможно установить backend для VideoCapture в Opencv 3.2.0 - PullRequest
1 голос
/ 16 января 2020

Мне нравится снимать видео с веб-камеры usb с opencv. Для этого я пытаюсь использовать класс 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

Я также обязательно скомпилирую opencv с V4L / V4L2. getBuildInformation () показывает следующую строку:

V4L / V4L2: Использование libv4l1 (версия 1.14.2) / libv4l2 (версия 1.14.2))

В настоящее время я работаю в Virtualbox 6.0 .4 с гостевой системой Ubuntu 18.04 и системой Ubuntu 18.04 в качестве хоста.

Вот минимальный пример:

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
}

Я благодарен за любую помощь

...