J'utilisais ma caméra via opencv et soudainement après le redémarrage, j'ai exécuté mon code, il affiche l'erreur ci-dessous:
cap = cv2.VideoCapture(0) # here it throws an error import json while(True): # Capture frame-by-frame ret, frame = cap.read() retval, buffer_img = cv2.imencode('.jpg', frame) resdata = base64.b64encode(buffer_img) resdata = "data:image/png;base64,"+ str(resdata.decode("utf-8")) PARAMS = {'image': resdata} # Our operations on the frame come here #gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # Display the resulting frame cv2.imshow('frame',frame) if cv2.waitKey(1) & 0xFF == ord('q'): break # When everything done, release the capture cap.release() cv2.destroyAllWindows()
[ WARN:0] global /io/opencv/modules/videoio/src/cap_v4l.cpp (802) open VIDEOIO ERROR: V4L: can't open camera by index 0 Traceback (most recent call last): File "test.py", line 20, in <module> retval, buffer_img = cv2.imencode('.jpg', frame) cv2.error: OpenCV(4.1.2) /io/opencv/modules/imgcodecs/src/loadsave.cpp:877: error: (-215:Assertion failed) !image.empty() in function 'imencode'
J'ai aussi essayé avec cap = cv2.VideoCapture(1)
mais cela montre que la caméra ne peut pas être trouvée
Comment puis-je résoudre ce problème?
5 Réponses :
Je n'irai pas dans cette partie Ce que vous essayez de faire, voici juste un bloc de code qui peut ouvrir votre caméra à chaque fois que vous l'exécutez,
python: 3.7.3
OpenCV: 4.1.0
import cv2 cap = cv2.VideoCapture(0) while True: ret, frame = cap.read() cv2.imshow('frame',frame) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows()
cap = cv2.VideoCapture (0), ça ne marche pas, ça me donne l'erreur que j'ai mentionnée au début
quel type de caméra utilisez-vous? Caméra par défaut pour ordinateur portable (0), caméra externe (1 -....), changez simplement la valeur 0 -... et voyez ce qui se passe.
J'ai utilisé (-1) cela donne un appareil photo impossible à trouver
changez-le simplement de 0 à 1 ou 2 ou 3, si cela ne fonctionne pas, le problème peut-être votre version python ou openCV. vous pouvez le réinstaller et voir ce qui se passe, juste une petite suggestion
fait toutes sortes de choses ne peuvent toujours pas résoudre, je pense qu'il y a un problème de compatibilité ubuntu sinon il devrait fonctionner.
J'ai eu le même problème, il suffit de changer 0 à 1, puis à -1 et de nouveau à 0. Je ne sais pas pourquoi cela a fonctionné pour moi.
J'ai eu le même problème lorsque j'ai créé plus d'une instance du cv2.VideoCapture (0). Vérifiez donc si votre code contient plusieurs initialisations ou sections qui appellent cv2.VideoCapture (0) plus d'une fois. J'étais confronté à ce problème lors de l'exécution du serveur flask en mode débogage car il appelait cv2.VideoCapture (0) deux fois.
python3 debugCamera.py [ WARN:0] global /io/opencv/modules/videoio/src/cap_v4l.cpp (887) open VIDEOIO(V4L2:/dev/video0): can't open camera by index
Erreur:
import cv2 cap = cv2.VideoCapture(0) cap2 = cv2.VideoCapture(0) while True: ret, frame = cap.read() cv2.imshow('frame',frame) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows()
Vous essayez d'ouvrir une caméra deux fois. Lorsqu'un matériel pénètre dans un travail, il n'autorise pas les commandes externes en même temps.
J'ai eu la même erreur. Essayez de changer 0 en -1
cap = cv2.VideoCapture(-1)
Cela a résolu le problème.
votre erreur obtenue cause -1 index. -1 index signifiant le dernier élément de la liste. je te recommande. vous pouvez utiliser 0 si vous avez une webcam.
Très probablement un problème d'autorisation sur /dev/video0
.
Vérifiez si vous faites partie du groupe "vidéo".
id -a
si vous ne voyez pas de vidéo dans votre liste de groupe, ajoutez sudo usermod -a -G video
pour les utilisateurs d'Ubuntu: (20.04)
sudo usermod -a -G video $LOGNAME
Déconnectez-vous et reconnectez-vous et essayez-le.