2017-02-24 3 views
0

Je suis en train de reconstituer un système de reconnaissance faciale en direct sur un flux webcam en utilisant python et opencv2. Jusqu'à présent, j'ai réussi à mettre en place à la fois le flux web cam et le composant de reconnaissance faciale, mais j'ai eu du mal à les assembler. À l'heure actuelle, le problème est de faire passer chaque image de la webcam au composant de détection et de reconnaissance faciale.Impossible d'analyser le périphérique de capture opencv2 image par image

La pièce pertinente du code est:

# Capture frame-by-frame 
    ret, frame = video_capture.read() 
    image=cv2.VideoCapture.grab(frame) 
    image_grey=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY) 
    faces = faceCascade.detectMultiScale(image_grey,scaleFactor=1.2,minNeighbors=5,minSize=(25,25),flags=0) 

Cependant, cela me donne:

Traceback (most recent call last): 
    File "webcam_cv3(2).py", line 66, in <module> 
    image=cv2.VideoCapture.grab(frame) 
AttributeError: 'builtin_function_or_method' object has no attribute 'grab' 

que je cherchais à travers le documentatioon de opencv2 et je ne peux pas sembler trouver une raison pour cv2.VideoCapture.grab n'étant pas valide. J'utilise python 2.7 avec opencv2. Toute aide serait vraiment appréciée!

+0

[ 'cv2.VideoCapture'] (http://docs.opencv.org/2.4/modules/highgui/doc/reading_and_writing_images_and_video.html#videocapture-videocapture) est une classe. Vous devez d'abord construire un objet de cette classe avant de pouvoir appeler la fonction membre. –

Répondre

0

ret, frame = video_capture.read() déjà vous donne frame comme np.array. Vous pouvez ensuite continuer:

image_grey = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 
faces = faceCascade.detectMultiScale(image_grey,scaleFactor=1.2,minNeighbors=5,minSize=(25,25),flags=0) 
+0

Merci pour la réponse rapide, mais alors nous obtenons: 'Traceback (dernier appel dernier): Fichier" webcam_cv3 (2) .py ", ligne 66, en image_grey = cv2.cvtColor (image, cv2.COLOR_BGR2GRAY) NameError: le nom 'image' n'est pas défini' – Aperce19

+0

Je voulais dire 'frame', voir edit. –

+0

Il permet de résoudre ce problème, mais nous donne: 'retraçage (le plus récent appel dernier): Fichier "webcam_cv3 (2) .py", ligne 83, dans Datafile [ "données"] = Data_list fichier «/usr /lib/python2.7/shelve.py ", ligne 133, dans __setitem__ self.dict [clé] = f.getvalue() Fichier" /usr/lib/python2.7/shelve.py ", ligne 79, in closed raise ValueError ('opération invalide sur l'étagère fermée') ValueError: opération invalide sur une étagère fermée' – Aperce19