Por que o OSX e o Ubuntu se comportam de maneira diferente ao abrir a mesma webcam USB duas vezes?

0

Eu tenho um programa C ++ que usa o openCV para abrir uma webcam USB.

Eu compilei o programa e ele roda sem problemas tanto no OSX quanto no Ubuntu.

No entanto, gostaria de algumas vezes iniciar o mesmo programa duas vezes abrindo a mesma cam (cujo id é passado como argumento bash). No OSX isso pode ser feito sem qualquer problema, no Ubuntu, aparentemente, você não pode. O erro que recebo ao lançar a segunda instância que abre a mesma cam no Ubuntu é:

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

É claro que o código está parando porque cam.isOpened() não foi verificado.

Por que o comportamento é diferente? E há alguma solução simples para ter o mesmo comportamento no Ubuntu?

As linhas de código para abrir a webcam são as seguintes (no OSX eu removi CAP_V4L ):

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;
}
    
por Francesco Boi 31.10.2018 / 11:15

0 respostas