【发布时间】:2021-12-26 00:28:58
【问题描述】:
我在运行 python 人脸识别脚本时遇到问题,它适用于某些图像,但在某些情况下,它给了我错误:
unface_encoding = face_recognition.face_encodings(faceimg)[0]IndexError: list index out of range
似乎unface_encoding 变量为空(?),但我不知道为什么这会发生在某些面孔而不是其他面孔以及如何解决它。我已经阅读了 face_recognition,但它并没有真正帮助我。
我是人脸识别(和 python)方面的初学者,所以任何建议或改进都会对我有所帮助。
这是我的代码:
import face_recognition
import cv2
known_image = face_recognition.load_image_file("known_faces/person.jpg")
unknown_image = face_recognition.load_image_file("unknown_faces/faces.jpg")
image = cv2.imread("unknown_faces/faces.jpg",cv2.IMREAD_COLOR)
face_locations = face_recognition.face_locations(unknown_image)
known_encoding = face_recognition.face_encodings(known_image)[0]
for face in face_locations:
print(face)
(a, b, c, d) = face
faceimg = unknown_image[a:c, d:b]
faceimg = cv2.cvtColor(faceimg, cv2.COLOR_BGR2RGB)
unface_encoding = face_recognition.face_encodings(faceimg)[0]
results = face_recognition.compare_faces([known_encoding], unface_encoding,0.5)
print(results)
if results == [True]:
cv2.rectangle(image, (b, c), (d, a), (0, 128, 0), 2)
elif results == [False]:
cv2.rectangle(image, (b, c), (d, a), (0, 0, 255), 1)
cv2.imshow('base', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
如有英文错误,请见谅,
提前致谢
【问题讨论】:
标签: python opencv face-recognition