如何使用 face_recognition 动态调用已知面孔名称

How can I Dynamically call Known Faces names with face_recognition

我在 python 中使用 face_recognition 作为 fr 包。我正在使用 glob 包从文件夹加载图像。

all_images = glob.glob('images/*.jpg')

在这里,我只是将其缩短为名称而不是整个路径。

for_images = ""

for images in all_images:
    images = images[7:-4]
    images = f'''"{images}",
'''
    for_images += images


for_images = for_images[:-2]
print(for_images)

这里我用face_recogniton package as fr:

一张一张加载图片
image           = fr.load_image_file("images/Asad.jpg")
face_encoding   = fr.face_encodings(image)[0]

asad_image = fr.load_image_file("images/Farhan.jpg")
asad_face_encoding = fr.face_encodings(asad_image)[0]

image_r           = fr.load_image_file("images/Kashif.jpg")
face_encoding_r   = fr.face_encodings(image_r)[0]

k_image = fr.load_image_file("images/Rameez.jpg")
k_face_encoding = fr.face_encodings(k_image)[0]

r_image           = fr.load_image_file("images/Rizwan.jpg")
r_face_encoding   = fr.face_encodings(r_image)[0]

# Create arrays of known face encodings and their names
known_face_encodings = [
    face_encoding,
    asad_face_encoding,
    face_encoding_r,
    k_face_encoding,
    r_face_encoding
]

我给他们这样的硬编码名称:

known_face_names = [
    "Asad",
    "Farhan",
    "Kashif",
    "Rameez",
    "Rizwan"
]

但现在我是动态传递的:

known_face_names = [
    for_images
]

但是它不像以前那样工作了,我到底做错了什么,请给我正确的答案。

如果你只是将它缩短到文件的精确名称而不是整个路径,你应该这样做:

for_names = ""

for names in all_images:
    names = names[7:-4]
    names = f'{names},'
    for_names += names

for_names = for_names.split(',')

而且既然现在是列表项,当动态定义为known_face_names时,应该是这样的:

known_face_names = for_names