2017-09-16 2 views
0

Je suis nouveau en python. J'utilise python 3.5, et openCV3. J'ai le code suivant qui est supposé capturer environ 20 images par la webcam:Capturer des cadres de visage en python


import cv2 
import time 
cam = cv2.VideoCapture(0) 
print(cam.isOpened()) 
detector=cv2.CascadeClassifier('haarcascade_frontalface_default.xml') 

Id=1 
sampleNum=0 

time.sleep(5) 
while(True): 
    ret, img = cam.read() 
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 
    faces = detector.detectMultiScale(gray, 1.3, 5) 

    for (x,y,w,h) in faces: 
     cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2) 

     #incrementing sample number 
     sampleNum=sampleNum+1 
     #saving the captured face in the dataset folder 
     cv2.imwrite("dataSet/User."+Id +'.'+ str(sampleNum) + ".jpg", gray[y:y+h,x:x+w]) 

     cv2.imshow('frame',img) 
    #wait for 100 miliseconds 
    if cv2.waitKey(100) & 0xFF == ord('q'): 
     break 
    # break if the sample number is morethan 20 
    elif sampleNum>20: 
     break 
cam.release() 
cv2.destroyAllWindows() 

Cependant, je reçois cette erreur:

gris = cv2.cvtColor (img, cv2.COLOR_BGR2GRAY)

erreur: ...... \ modules \ imgproc \ src \ color.cpp: 7456: erreur: (-215) scn == 3 || scn == 4 dans la fonction cv :: ipp_cvtColor

Comment puis-je surmonter une telle erreur s'il vous plaît?

+0

ce qui est la sortie de l'impression (cam.isOpened())? –

+0

Je vérifie juste si la came fonctionne ou pas. Cependant, mon code ci-dessus n'a pas réussi à capturer ma photo et à l'enregistrer dans un dossier de jeu de données! – Mary

Répondre

0

Ce code a fonctionné sur ma machine et suit mon visage. Essayez ce qui suit:

  • Assurez-vous que le fichier xarc de haarcascade se trouve dans le même répertoire que celui où vous exécutez le code. Vous pouvez également spécifier le chemin absolu du fichier pour être sûr.
  • vérifiez si l'image gray ressemble à ce que vous attendez cv2.imgshow('gray', gray) (et insérez un sommeil afin que vous puissiez le voir). Le cam.isOpened() doit retourner vérifier Vrai
  • si son type de données est un np.ndarray uint8: print(gray.dtype)
+0

Puis-je maintenant quelle version de python utilisez-vous? 3.5? Ou moins? – Mary

+0

Aussi, voulez-vous dire que je dois changer cette ligne de cv2.imshow ('frame', img) à cv2.imshow ('gris', gris) !!! En outre, j'ai essayé de spécifier le chemin absolu du xml bu cela n'a pas fonctionné! – Mary

+0

fichier "C:/Users/Mary/Desktop/Projet/du visage Rec/face_datasets.py", ligne 13, en gris = cv2.cvtColor (img, cv2.COLOR_BGR2GRAY) erreur: .. \ .. \ .. \ modules \ imgproc \ src \ color.cpp: 7456: erreur: (-215) scn == 3 || scn == 4 dans la fonction cv :: ipp_cvtColor – Mary