Ocorre quando a câmera não é liberada pelo seu programa - por exemplo, quando você a mata usando Ctrl + C . Você pode usar o modo personalizado para sair do loop de leitura da câmera - por exemplo, esperar por Esc :
while (1) { // camera loop
cap.read(frame);
...
(frame processing)
...
if (waitKey(20) == 27) { // wait for 'Esc' key press for 20ms
break; // if 'Esc' key is pressed, break loop
}
}
Ou melhor, você pode pegar Ctrl + C (sinal SIGINT):
bool stop = false;
void sigIntHandler(int signal) {
stop = true;
}
std::signal(SIGINT, sigIntHandler);
while (!stop) { // camera loop
cap.read(frame);
...
(frame processing)
...
}