我正在尝试能够使用名称和图像文件名从数据库中提取数据,然后将其放入face_recognition
Python程序中。但是,对于我正在使用的代码,该程序通过调用具有不同名称的变量来学习面孔。
如何根据数据库中的数据量创建变量?
解决这个问题的更好方法是什么?
first_image = face_recognition.load_image_file("first.jpg")
first_face_encoding = face_recognition.face_encodings(first_image)[0]
second_image = face_recognition.load_image_file("second.jpg")
biden_face_encoding = face_recognition.face_encodings(second_image)[0]
答案 0 :(得分:0)
您可以使用数组,而不是将每个图像/编码存储在单独的变量中,然后通过for
循环填充数组。
假设您可以将文件名从first.jpg
,second.jpg
...更改为1.jpg
,2.jpg
...,可以执行以下操作:
numberofimages = 10 # change this to the total number of images
images = [None] * (numberofimages+1) # create an array to store all the images
encodings = [None] * (numberofimages+1) # create an array to store all the encodings
for i in range(1, numberofimages+1):
filename = str(i) + ".jpg" # generate image file name (eg. 1.jpg, 2.jpg...)
# load the image and store it in the array
images[i] = face_recognition.load_image_file(filename)
# store the encoding
encodings[i] = face_recognition.face_encodings(images[i])[0]
然后您可以访问例如。第三张图片和第三张编码是这样的:
image[3]
encoding[3]
如果不能更改图像文件名,则可以将它们存储在字典中,然后执行以下操作:
numberofimages = 3 # change this to the total number of images
images = [None] * (numberofimages+1) # create an array to store all the images
encodings = [None] * (numberofimages+1) # create an array to store all the encodings
filenames = {
1: "first",
2: "second",
3: "third"
}
for i in range(1, numberofimages+1):
filename = filenames[i] + ".jpg" # generate file name (eg. first.jpg, second.jpg...)
print(filename)
# load the image and store it in the array
images[i] = face_recognition.load_image_file(filename)
# store the encoding
encodings[i] = face_recognition.face_encodings(images[i])[0]