Как запустить ту же программу opencv C ++, которая использует твик веб-камеры в Ubuntu 18.04? - PullRequest
0 голосов
/ 04 октября 2018

У меня есть программа на C ++, использующая openCV, которая открывает веб-камеру.

Следующие строки выглядят следующим образом:

cout<<"camera initializing\n";
VideoSettings cam(camNum + CAP_V4L);
cout<<"camera initialized\n";
cout<<"Ch3ck c4m3ra is 0p3n3d\n";
if ( !cam.isOpened())
{
    cout << "Could not open reference " << sourceReference << endl;
    return -1;
}

Я скомпилировал программу, и она без проблем работает.

Однако иногда мне хотелось бы дважды запускать одну и ту же программу на Ubuntu18.04 с одной и той же камерой (идентификатор которой передается в качестве аргумента bash).Я получаю ошибку при запуске второго экземпляра, который открывает ту же камеру:

VIDEOIO ERROR: V4L2: Pixel format of incoming image is unsupported by OpenCV
Unable to stop the stream: Device or resource busy
VIDEOIO ERROR: V4L: can't open camera by index 0

Конечно, код останавливается, потому что cam.isOpened() не проверено.

Та же программа (удалениеCAP_V4L) на OSX можно запускать много раз без каких-либо проблем.

Почему поведение отличается?И есть ли простой обходной путь, чтобы иметь такое же поведение в Ubuntu?

...