Python Проблема потока управления, код выполняется, когда я не хочу, чтобы он автоматически (Face-Recognition) - PullRequest
0 голосов
/ 19 марта 2020

Я довольно новичок в Python и работаю над системой распознавания лиц. У меня проблемы с выполнением кода, когда я этого не хочу. Когда лицо распознается в системе, оно печатает оператор else один раз (я не хочу этого).

Когда лицо найдено, но оно не распознано, оно выполняет оператор else дважды. Я хочу иметь возможность, чтобы, если лицо не было распознано, оно обновляло GUI. Однако на данный момент это невозможно, поскольку GUI будет обновляться, даже если лицо будет распознано один раз.

Оператор else после if results [0] выполняется, даже если оператор правда. Это потому, что оно не вырвалось из-за l oop?

  • Когда лицо распознано: print ("test")
  • Когда лицо не распознано print («тест») x2

Любая помощь приветствуется, спасибо!

    print("[INFO] CROSS-REFERENCING IMAGE")
    print(filename)

    directory = "output/"
    file_names = os.listdir(directory)

    picture_of_me = face_recognition.load_image_file("rawimages/{}".format(filename))
    try:
        my_face_encoding = face_recognition.face_encodings(picture_of_me)[0]
        print("[INFO] CHECKING IF USER IS IN DATABASE")
        try:
            for i in file_names:
                iPath = os.path.join(directory, i)
                with open(iPath, 'rb') as fh:

                    new_picture = face_recognition.load_image_file(iPath)

                    for face_encoding in face_recognition.face_encodings(new_picture):

                        results = face_recognition.compare_faces([my_face_encoding], face_encoding)

                        if results[0]:
                            print("[INFO] USER FOUND")
                            userID = ''.join(filter(lambda x: x.isdigit(), iPath))
                            print("[INFO] ID : {}".format(userID))
                            updateGUIYes(userID)
                            raise BreakIt
                        else:
                            # I want to be able to do something here if face isn't found
                            print("test")
                            pass
        except BreakIt:
            pass
    except IndexError as e:
        updateGUINo()
        print("[INFO] NO FACE FOUND")


  [1]: https://i.stack.imgur.com/m93i6.png
...