程序开始阶段实际上在encode每一张图,很花时间,我们可以事先将图片处理好,这样识别多个人脸时就会更快。
使用pickle模块,将处理好的数据储存为变量。

  1. # Load a sample picture and learn how to recognize it.
  2. print("Loading known face image(s)")
  3. obama_image = face_recognition.load_image_file("obama_small.jpg")
  4. obama_face_encoding = face_recognition.face_encodings(obama_image)[0]
  1. # Loop over each face found in the frame to see if it's someone we know.
  2. for face_encoding in face_encodings:
  3. # See if the face is a match for the known face(s)
  4. match = face_recognition.compare_faces([obama_face_encoding], face_encoding)
  5. name = "<Unknown Person>"
  6. if match[0]:
  7. name = "Barack Obama"
  8. print("I see someone named {}!".format(name))
  9. face_names.append(name)

pickle模块


引自https://www.cnblogs.com/lincappu/p/8296078.html


pickle可以存储什么类型的数据呢?


  1. 所有python支持的原生类型:布尔值,整数,浮点数,复数,字符串,字节,None。

  2. 由任何原生类型组成的列表,元组,字典和集合。

  3. 函数,类,类的实例


四个方法


  1. # dumps功能
  2. import pickle
  3. data = ['aa', 'bb', 'cc']
  4. # dumps 将数据通过特殊的形式转换为只有python语言认识的字符串
  5. p_str = pickle.dumps(data)
  6. print(p_str)
  7. b'\x80\x03]q\x00(X\x02\x00\x00\x00aaq\x01X\x02\x00\x00\x00bbq\x02X\x02\x00\x00\x00ccq\x03e.
  1. # loads功能
  2. # loads 将pickle数据转换为python的数据结构
  3. mes = pickle.loads(p_str)
  4. print(mes)
  5. ['aa', 'bb', 'cc']
  1. # dump功能
  2. # dump 将数据通过特殊的形式转换为只有python语言认识的字符串,并写入文件
  3. with open('xxxx/tmp.pk', 'w') as f:
  4. pickle.dump(data, f)
  1. # load功能
  2. # load 从数据文件中读取数据,并转换为python的数据结构
  3. with open('D:/tmp.pk', 'r') as f:
  4. data = pickle.load(f)

但是这种改进方法对人脸识别速度没有本质的提高,希望大神能从其他方面进行改进。