这是多么奇怪的系统啊。我在这里遇到了与此问题相同的问题:AttributeError:“模块”对象没有属性“SVM_LINEAR” https://stackoverflow.com/questions/36109874/attributeerror-module-object-has-no-attribute-svm-linear/37028854#37028854但我无法向该问题添加更多问题或评论,因此我被迫问几乎相同的问题。
无论如何,请帮助解决以下问题:
所以我只是注意到 CV-3.0.1 有卡方和交集内核,而我之前的 2.4.9 没有,所以我升级了(gentoo 顺便说一句)。 2.4.9 中一切正常,我只是想要 moar 内核选择(Yang 等人 2009 说,交集与我所做的事情配合得很好)。
但遵循上述方法对我来说没有用。
除了我平时的做法:
import cv2
我尝试添加:
import cv2.ml
and/or
from cv2 import ml
他们没有修复任何东西(我对 python 也有点陌生,所以不确定我应该使用哪个)。
My line:
svm = cv2.SVM()
是导致问题的原因,我尝试将其更改为:
svm = cv2.ml.SVM()
这并不能解决问题,我得到的仍然是:
Traceback (most recent call last):
File "05traintestsift.py", line 12, in svm = cv2.SVM()
AttributeError: 'module' object has no attribute 'SVM'
or:
Traceback (most recent call last):
File "05traintestsift.py", line 12, in svm = cv2.ml.SVM()
AttributeError: 'module' object has no attribute 'SVM'
当然有一些我所缺少的基本方法可以让东西再次工作吗?
注意:在 2.4.9 中,除了尝试新的内核类型之外,所有功能都在半小时前工作,所以这纯粹是 3.0.1-r2 中的一些新语法发生了变化。
我还会注意到他们在文档中的示例:http://docs.opencv.org/3.1.0/dd/d3b/tutorial_py_svm_opencv.html http://docs.opencv.org/3.1.0/dd/d3b/tutorial_py_svm_opencv.html也没有放入任何“.ml”,所以即使这样也没有更新(顺便说一句,我从其示例的第 48 行复制了 svm = cv2.SVM() 语法)。
我注意到,如果我只是删除该行,它会进一步通过代码,通过上一个问题的 .ml 修复,它可以很好地接受我的参数:
svm_params = dict(kernel_type = cv2.ml.SVM_CHI2,svm_type = cv2.ml.SVM_C_SVC,C=7,gamma=3)
但是当我去训练时它找不到 svm:
svm.train(traindata,trainnames,params=svm_params)
(显然是因为我还没有创建“svm”对象)