我正在使用使用OpenCV库和Python语言的Fisher Face算法训练人脸识别模型。
fisherFace = cv2.face.FisherFaceRecognizer_create()
fisherFace.train(imagefaceList, np.array(labelsIndexList))
我想将此模型保存在文件/内存中。换句话说,我想保存'fisherface'对象。我尝试使用this来保存此对象的pickle模块。我无法挑选和取消这个对象。代码如下:
class test(object):
def __init__(self, a):
self.a = a
def pickle_test(t):
print('pickling a test instance...')
return test, (t.a,)
copyreg.pickle(test, pickle_test)
t = test(f)
t1 = copy.copy(t)
t2 = pickle.dumps(t)
是否有任何方法可以保存经过训练的渔民面部算法模型,并通过加载相同的人脸识别模型在其他地方使用它?
答案 0 :(得分:0)
FaceRecognizer类有一个save方法,它将xml / yml文件存储到可以使用load方法加载的磁盘中。
这是类方法列表。
所以,你应该可以做到
fisherFace.save("model.xml")
将模型保存到文件。 https://docs.opencv.org/3.0-last-rst/modules/face/doc/facerec_api.html
答案 1 :(得分:0)
要在训练后保存面部识别器,可以使用write方法并保存 状态为yaml或xml文件。 要在程序的下一个迭代中使用保存的模型,请调用识别器的read方法,并传递保存状态的文件的位置。