我从文件加载训练有素的 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 的子项对我来说是有意义的(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')