2017-05-23 3 views
-1

Mein OpenCV (Python) Code zur Erkennung Objekt:Nameerror: name 'x1' definiert ist, nicht in OpenCV Python

import ... 
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') 
cap1 = cv2.VideoCapture(1) 

while True: 
    ret1, img1 = cap1.read() 

    gray = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY) 

    faces = face_cascade.detectMultiScale(gray, 1.3, 5) 
    for (x1, y1, w1, h1) in faces: 
      if x1 >0: 
      detect_face1 = x1 
      print 'face distance Camera 1: ', detect_face1 
     else: 
      pass 

Debugger zeigt, dass facestype tuple:() ist, wahrscheinlich als Folge if x1 >0: NameError: name 'x1' is not defined zeigt. Denn wenn Gesicht in der Kamera erkannt wird, dann ist faces ein Array, das einen x1-Wert> 0 hat. Ich weiß, dass es eine ziemlich einfache Lösung sein kann, aber jede Hilfe wird geschätzt.

+1

Wenn 'faces' ein Tupel ist, dann ist es merkwürdig, über es hinweg zu iterieren. Damit diese Schleife funktionieren kann, müssen 'Gesichter' ** eine Liste von ** Tupeln sein. – deceze

+0

Am Anfang, wenn kein Face erkannt wird, hat 'faces' keinen Wert für' x1, y1, w1, h1', daher vermute ich, dass dieser Fehler auftritt. wenn Face erkannt wird, dann 'faces = [10,20,30,40]' (sagen wir), und meine Schleife funktioniert. Aber wenn es leer ist, bekomme ich diesen Fehler. Wie kann ich das überwinden? @deceze – sayem48

Antwort

-1

Tupel faces war leer, als Ergebnis NameError.

if faces==0: 
    pass 
else: 
    detect_face=x1 

löste das Problem.

Verwandte Themen