程序开始阶段实际上在encode每一张图,很花时间,我们可以事先将图片处理好,这样识别多个人脸时就会更快。
使用pickle模块,将处理好的数据储存为变量。
# Load a sample picture and learn how to recognize it.print("Loading known face image(s)")obama_image = face_recognition.load_image_file("obama_small.jpg")obama_face_encoding = face_recognition.face_encodings(obama_image)[0]
# Loop over each face found in the frame to see if it's someone we know.for face_encoding in face_encodings:# See if the face is a match for the known face(s)match = face_recognition.compare_faces([obama_face_encoding], face_encoding)name = "<Unknown Person>"if match[0]:name = "Barack Obama"print("I see someone named {}!".format(name))face_names.append(name)
pickle模块
引自https://www.cnblogs.com/lincappu/p/8296078.html
pickle可以存储什么类型的数据呢?
所有python支持的原生类型:布尔值,整数,浮点数,复数,字符串,字节,None。
由任何原生类型组成的列表,元组,字典和集合。
函数,类,类的实例
四个方法
# dumps功能import pickledata = ['aa', 'bb', 'cc']# dumps 将数据通过特殊的形式转换为只有python语言认识的字符串p_str = pickle.dumps(data)print(p_str)b'\x80\x03]q\x00(X\x02\x00\x00\x00aaq\x01X\x02\x00\x00\x00bbq\x02X\x02\x00\x00\x00ccq\x03e.
# loads功能# loads 将pickle数据转换为python的数据结构mes = pickle.loads(p_str)print(mes)['aa', 'bb', 'cc']
# dump功能# dump 将数据通过特殊的形式转换为只有python语言认识的字符串,并写入文件with open('xxxx/tmp.pk', 'w') as f:pickle.dump(data, f)
# load功能# load 从数据文件中读取数据,并转换为python的数据结构with open('D:/tmp.pk', 'r') as f:data = pickle.load(f)
但是这种改进方法对人脸识别速度没有本质的提高,希望大神能从其他方面进行改进。
