2
votes

Erreur lors de la tentative d'utilisation de CV2 pour capturer une vidéo à partir de WebCam

J'essaie de créer une application qui utilise la webcam pour obtenir la vidéo. Mais lorsque j'exécute le programme, la webcam ne démarre pas et je ne vois pas la fenêtre cv2 ouverte. J'ai même essayé de créer un programme de webcam simple, mais cela ne fonctionne pas non plus:

[ WARN:0] global C:\projects\opencv-python\opencv\modules\videoio\src\cap_msmf.cpp (436) `anonymous-namespace'::SourceReaderCB::~SourceReaderCB terminating async callback
Traceback (most recent call last):
  File "test.py", line 11, in <module>
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.error: OpenCV(4.3.0) C:\projects\opencv-python\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'

Je reçois l'erreur suivante:

import numpy as np
import cv2

cap = cv2.VideoCapture(0)

while(True):
    # Capture frame-by-frame
    ret, frame = cap.read()

    # Our operations on the frame come here
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # Display the resulting frame
    cv2.imshow('frame',gray)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()

Ma webcam fonctionne bien dans d'autres applications. Seul cv2 a un problème. que dois-je faire pour résoudre le problème?


0 commentaires

3 Réponses :


0
votes

Il semble qu'il n'y ait pas de cadre à convertir en niveaux de gris. Que diriez-vous d'essayer ceci.

import numpy as np
import cv2

#change to your video path
cap = cv2.VideoCapture("D:\start.mp4")

while(cap.isOpened()):
    # Capture frame-by-frame
    ret, frame = cap.read()

    if (ret!=True):
         break

    # Our operations on the frame come here
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # Display the resulting frame
    cv2.imshow('frame',gray)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()


4 commentaires

il ne démarre toujours pas la webcam. Je reçois l'avertissement avant et le programme se termine


il n'entre pas dans la boucle while. cap.isOpened() renvoie false


ah, vous devriez mettre le chemin vidéo à la 4ème ligne comme ceci cap = cv2.VideoCapture ("D: \ start.mp4")


mais je ne lis pas de fichier vidéo, j'essaye de capturer une vidéo webcam



0
votes

Le programme que vous utilisez est le "bonjour le monde" de la vidéo ou la led clignotante ou arduino.

J'ai donc rencontré le même problème que vous et la réponse est ... mauvais pilote pour votre appareil photo.

quand j'ai acheté mon appareil photo très cher (20 $), j'installe le pilote et tout fonctionnait bien avec opencv.

J'ai récemment expérimenté un cauchemar avec mon WIFI et je commence à désinstaller les pilotes.

Je résous enfin mes problèmes de WIFI OUI !!! Et puis je réinstalle mes pilotes incluant la vidéo MAIS mon chat a rayé le disque d'installation d'origine de la vidéo, ok donc je laisse Windows installer un pilote générique.

Tout semble bien, son et image, bien (que demandez-vous d'autre pour un appareil photo à 20 $)

Après un certain temps, je reviens à openCV et puis ... même erreur

cv2.error: OpenCV (4.3.0) C: \ projects \ opencv-python \ opencv \ modules \ imgproc \ src \ color.cpp: 182: error: (-215: Assertion failed)! _src.empty () in function 'cv :: cvtColor'

Je regarde tous les forums pour tester tout ce que je pourrais installer d'autre version et tous ces "tours de magie" qui prennent du temps (mais on apprend beaucoup c'est le bon côté de celui-ci) Totalement désespéré Je me souviens que je n'ai pas installé le pilote d'origine BINGO Je suis allé à la boutique car ce produit OEM n'avait pas d'adresse internet pour charger le pilote GRGRGRGRgrrgrgrgr et tout fonctionne parfaitement maintenant Petits conseils avec le pilote générique J'ai souvent été obligé de déconnecter et reconnecter ma caméra avec ce test https: //www.onlinemictest .com / webcam-test / (pas sûr que ce site soit propre, utilisez-le à vos risques et périls) Alors installez un driver adapté à votre caméra et arrêtez de douter de l'opencv et de votre installation Mes 5 cents.


2 commentaires

Mais mon appareil photo fonctionne très bien sur d'autres applications. alors pourquoi seul OpenCV a un problème? plutôt OpenCV fonctionnait également il y a quelques mois, mais lorsque j'ai formaté mon ordinateur portable et l'ai réinstallé, il pose maintenant des problèmes


Mon appareil photo fonctionne également avec le pilote générique mais pas assez. Quel pilote avez-vous pour votre appareil photo? Je parie que vous avez un pilote générique et non le pilote spécifique à votre appareil photo Si, comme moi, vous l'utilisez juste pour contacter des amis, vous ne vous souciez pas si une fonction ne fonctionne pas, garçon openCV s'en soucie !!!



0
votes

Il semble qu'il pourrait y avoir un problème de synchronisation entre le démarrage de la caméra et le code entrant dans la boucle while. J'ai rencontré exactement le même problème et j'étais perplexe.

J'avais même un code précédent qui fonctionnait (dans un autre projet). J'ai donc essayé d'ajouter une lecture supplémentaire avant d'entrer dans la boucle while.

ret, frame = cap.read()
white True:
    ret, frame = cap.read()
    # rest of the code

Cela a fonctionné. Ensuite, j'ai voulu voir si cela résout vraiment le problème. J'ai supprimé cap.read() avant la boucle while et relancé le code. Maintenant, il a continué à fonctionner.

Je pense que l'appareil photo doit démarrer et être lu par le programme une fois avant de pouvoir démarrer instantanément.


0 commentaires