【问题标题】:Saving OpenCV object in memory in python在python中将OpenCV对象保存在内存中
【发布时间】:2017-11-09 12:51:15
【问题描述】:

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

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

我想将此模型保存在文件/内存中。换句话说,我想保存 'fisherface' 对象。我已经尝试使用this 保存这个对象的泡菜模块。我无法腌制和解开这个对象。代码如下:

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人脸算法,并通过加载相同的模型进行人脸识别在其他地方使用它?

【问题讨论】:

标签: python-3.x opencv pickle


【解决方案1】:

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

这是类方法列表。

所以,你应该可以做到

fisherFace.save("model.xml")

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

【讨论】:

  • 感谢您的回答。我可以保存模型,但我使用的是 opencv 3.3.0 版本,它不直接在 FisherFaceRecognizer 类中包含 save() 和 load() 方法。它继承自算法类。那么你能帮助如何加载保存的模型吗?提前谢谢你。
  • 您将如何在内存中执行此操作(根据标题)?
【解决方案2】:

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

【讨论】:

  • 您将如何在内存中执行此操作(根据标题)?
猜你喜欢
  • 2011-12-25
  • 2011-02-22
  • 2013-02-22
  • 2016-10-16
  • 2016-02-21
  • 1970-01-01
  • 1970-01-01
  • 2017-11-14
  • 2011-08-12
相关资源
最近更新 更多