столкнуться с проблемой KeyError при выполнении opencv - PullRequest
0 голосов
/ 27 апреля 2019

В настоящее время я использую OpenCV и пытаюсь самостоятельно распознавать лица.

Я посмотрел несколько видео на YouTube и, наконец, записал их в код, но каждый раз, когда я запускаю программу, она всегда показывает

print(labels[id_])
KeyError: 1

Я искал, как решить проблемы с Keyerror в течение нескольких дней, но не могу найти ответ.

вот код

labels = {"person_name": 1}

with open("labels.pickle", 'rb') as f:
    og_labels = pickle.load(f)

labels = {v: k for k, v in og_labels.items()}

cap = cv2.VideoCapture(0)

while (True):
    ret, frame = cap.read()

    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    faces = face_cascade.detectMultiScale(gray, scaleFactor=1.2, minNeighbors=5)
    for (x, y, w, h) in faces:

        id_,conf = recognizer.predict(roi_gray)
        if conf >= 4 and conf <= 85:

            if id_ == 1:
                print(id_)
            print(labels[id_])

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

1 Ответ

0 голосов
/ 27 апреля 2019

Пара вещей:

  1. Вы перезаписываете labels = {"person_name": 1} с labels = {v: k for k, v in og_labels.items()}. Какова цель labels = {"person_name": 1}?
  2. Вы пытаетесь получить доступ к labels[1], который отличается от labels['1']. Почему бы вам не напечатать / pprint содержимое labels до print(labels[id_]) и посмотреть, что это за ключи?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...