如何从OpenCV 3.1中的文件加载SVM数据?

时间:2016-07-04 10:12:20

标签: python svm opencv3.1

我从文件加载训练的SVM时遇到问题。我使用Python和OpenCv 3.1.0。我通过以下方式创建svm对象:

svm = cv2.ml.SVM_create()

接下来,我训练svm并保存到文件:

svm.save('data.xml')

现在我想在其他Python脚本中加载此文件。在文档中,我无法找到任何方法。

是否有从文件加载svm的技巧?感谢您的回复。

1 个答案:

答案 0 :(得分:5)

我认为没有svm.load(filepath)方法作为svm.save(filepath)的对应方面有点令人困惑,但当我阅读模块帮助时,我认为SVM_load是一个孩子cv2.ml(SVM_create的兄弟)。

确保您的opencv 分支是最新的(目前版本为3.1.0-dev)

>>> import cv2
>>> cv2.__version__
'3.1.0-dev'
>>> help(cv2.ml)

返回

SVM_create(...)
    SVM_create() -> retval

SVM_load(...)
    SVM_load(filepath) -> retval

所以你可以简单地使用类似的东西:

if not os.path.isfile('svm.dat'):
    svm = cv2.ml.SVM_create()
    ...
    svm.save('svm.dat')
else:
    svm = cv2.ml.SVM_load('svm.dat')