在执行opencv时遇到KeyError问题

时间:2019-04-27 02:01:26

标签: python opencv

我目前正在使用OpenCV,而tryna自己进行人脸识别。

我在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 :(得分:0)

几件事:

  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_])并查看实际的键是什么?