Je travaille sur la caméra en utilisant OpenCV 3.0.0 et C++ avec Ubuntu 14.04,
Quand je lance un programme avec la caméra et que je l’arrête avec Ctrl + C, Je ne peux pas le faire courir une seconde fois et cela me donne ce qui suit:
libv4l2: error turning on stream: Invalid argument
VIDIOC_STREAMON: Invalid argument
Cannot read a frame from video stream
J'ai essayé lsusb
et l'appareil photo (son ordinateur portable intégré n'est pas externe) n'est pas reconnu. Aussi avec cheeze, il me dit qu'il y a une erreur en essayant d'ouvrir la caméra.
La seule solution consiste à redémarrer l'ordinateur portable.
Toute suggestion sera appréciée :) merci
Cela se produit lorsque la caméra n'est pas diffusée par votre programme - par exemple lorsque vous la tuez en utilisant Ctrl + C. Vous pouvez utiliser une méthode personnalisée pour quitter la boucle de lecture de la caméra - par exemple, attendez 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 mieux, vous pouvez attraper Ctrl + C (Signal SIGINT):
bool stop = false;
void sigIntHandler(int signal) {
stop = true;
}
std::signal(SIGINT, sigIntHandler);
while (!stop) { // camera loop
cap.read(frame);
...
(frame processing)
...
}
Vous ne mentionnez pas votre plate-forme, mais sur le Raspberry Pi, cette erreur peut survenir lorsque l'exécution de la capture vidéo à l'aide du pilote v4l2 est requise et lorsque la mémoire GPU n'est pas définie sur 128 Mo ou plus. Exécutez Sudo raspi-config
et ajustez-le à 128 en utilisant le menu.
Le problème ici est avec le noyau
Sudo apt-get install linux-generic-lts-utopic
Cela a fait le tour pour moi