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

How to load SVM data from file in OpenCV 3.1?

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

svm = cv2.ml.SVM_create()

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

svm.save('data.xml')

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

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

我认为没有 svm.load(filepath) 方法作为 svm.save(filepath) 的对应方法有点令人困惑,但是当我阅读模块帮助时,它对我来说很有意义SVM_load 是 cv2.ml 的 child(SVM_create 的兄弟姐妹)。

确保你的opencv master分支是up-to-date(当前版本3.1.0-dev)

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

returns

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')