【发布时间】:2016-08-30 13:09:59
【问题描述】:
这是一个多么奇怪的系统。我在这里遇到了与此问题相同的问题: AttributeError: 'module' object has no attribute 'SVM_LINEAR' 但是我不能再向那个问题添加任何问题或 cmets,所以我不得不问几乎相同的问题。 无论如何,请帮助解决以下问题:
所以我刚刚注意到 CV-3.0.1 有卡方和交集内核,而我之前的 2.4.9 没有,所以我升级了(gentoo btw)。一切都在 2.4.9 中工作,我只想要 moar 内核选择(并且相交与我所做的 Yang et al 2009 说的效果很好)。
但是按照上面的方法对我没有用。
除了我平时:
import cv2
我已经尝试添加:
import cv2.ml
和/或
from cv2 import ml
他们不解决任何问题(我对 python 也很陌生,所以不确定我打算使用哪个)。
我的台词:
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'
或:
Traceback (most recent call last):
File "05traintestsift.py", line 12, in svm = cv2.ml.SVM()
AttributeError: 'module' object has no attribute 'SVM'
肯定有一些基本的方法可以让我缺少的东西再次工作吗?
nb:除了尝试新的内核类型之外的一切都在半小时前的 2.4.9 中工作,所以只是 3.0.1-r2 中的一些新语法发生了变化。
我还会注意到他们在此处的文档中的示例:http://docs.opencv.org/3.1.0/dd/d3b/tutorial_py_svm_opencv.html 也没有放入任何“.ml”,所以即使这样也没有更新(我复制了 svm = cv2.SVM()顺便说一句,他们示例的第 48 行的语法)。
我注意到,如果我只是删除该行,它会进一步了解代码,使用上一个问题中的 .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' 对象)
【问题讨论】: