在python

时间:2017-11-09 12:51:16

标签: python-3.x opencv pickle

我正在使用使用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)

是否有任何方法可以保存经过训练的渔民面部算法模型,并通过加载相同的人脸识别模型在其他地方使用它?

2 个答案:

答案 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方法,并传递保存状态的文件的位置。