3 votes

libv4l2 : erreur d'activation du flux : Invalid argument VIDIOC_STREAMON : Invalid argument

Je travaille sur la caméra en utilisant opencv 3.0.0 et C++ avec Ubuntu 14.04 ,

Lorsque je lance un programme en utilisant la caméra et que je l'arrête avec Ctrl + C Je n'arrive pas à le faire fonctionner une deuxième fois et il me donne le message suivant :

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 (il est intégré à l'ordinateur portable, pas externe) n'est pas reconnu. De plus, avec Cheeze, il me dit qu'il y a une erreur lorsque j'essaie d'ouvrir la caméra.

La seule solution est de redémarrer l'ordinateur portable.

Toute suggestion sera appréciée :) merci

3voto

Honza Points 274

Cela se produit lorsque la caméra n'est pas libérée par votre programme - par exemple lorsque vous le tuez en utilisant Ctrl + C . Vous pouvez utiliser une méthode personnalisée pour sortir de la boucle de lecture de la caméra - par exemple attendre que 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)
    ...
}

Voir : Traitement des signaux en C++ (référence)

0voto

nico Points 1

Le problème ici est avec le noyau

sudo apt-get install linux-generic-lts-utopic

Ceci a fait l'affaire pour moi

0voto

bleater Points 101

Vous ne mentionnez pas votre plateforme, mais sur le Raspberry Pi, cette erreur peut se produire lors de l'exécution d'une capture vidéo à l'aide du pilote v4l2 requis et lorsque la mémoire du GPU n'est pas définie à 128 Mo ou plus. Exécutez sudo raspi-config et réglez-le sur 128 à l'aide du menu.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X