5

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

svm = cv2.ml.SVM_create()

接下来,我训练 svm 并通过以下方式保存到文件:

svm.save('data.xml')

现在我想在其他 Python 脚本中加载这个文件。在文档中我找不到任何方法来做到这一点。

有没有从文件加载 svm 的技巧?感谢您的任何回复。

4

1 回答 1

9

我认为没有 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')
于 2016-08-15T14:06:52.583 回答