将 OpenCV 对象保存在 python 内存中

Saving OpenCV object in memory in python

我正在使用 OpenCV 库和 Python 语言使用 Fisher Face 算法训练人脸识别模型。

   fisherFace = cv2.face.FisherFaceRecognizer_create()
   fisherFace.train(imagefaceList, np.array(labelsIndexList))

我想在file/memory中保存这个模型。换句话说,我想保存 'fisherface' 对象。我已经尝试使用 this 保存此对象的 pickle 模块。我无法腌制和解开这个 object.Code 如下所示:

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)

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

FaceRecognizer class 有一个保存方法,将 xml/yml 文件存储到磁盘中,可以使用加载方法加载。

这是class方法列表。

所以,你应该可以做到

fisherFace.save("model.xml")

将模型保存到文件。 https://docs.opencv.org/3.0-last-rst/modules/face/doc/facerec_api.html

训练完成后要保存人脸识别器,可以使用write方法并保存 状态作为 yaml 或 xml 文件。 要在程序的下一次迭代中使用保存的模型,请调用识别器的读取方法并传递保存状态的文件的位置。