加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

使用OpenCV-3.0.1 / python 2.7创建svm

发布时间:2020-12-20 12:10:37 所属栏目:Python 来源:网络整理
导读:这是多么奇怪的系统.我遇到了与此问题相同的问题: AttributeError: ‘module’ object has no attribute ‘SVM_LINEAR’ 但是我不能再对这个问题添加任何问题或评论,所以我不得不问几乎相同的问题. 无论如何,请帮助以下: 所以我只注意到CV-3.0.1有卡方和交
这是多么奇怪的系统.我遇到了与此问题相同的问题:
AttributeError: ‘module’ object has no attribute ‘SVM_LINEAR’
但是我不能再对这个问题添加任何问题或评论,所以我不得不问几乎相同的问题.
无论如何,请帮助以下:

所以我只注意到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",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’,所以即使没有更新(我从第48行复制了svm = cv2.SVM()语法他们的例子btw).

我注意到,如果我只是删除该行,它会进一步通过代码,使用上一个问题中的.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’对象)

解决方法

它应该是这样的:

trainingDataMat = np.array(*train_data*,np.float32)
labelsMat = np.array([*label_data*],np.int32)

svm = cv2.ml.SVM_create()
svm.setType(cv2.ml.SVM_C_SVC)
svm.setKernel(cv2.ml.SVM_LINEAR)
# svm.setDegree(0.0)
# svm.setGamma(0.0)
# svm.setCoef0(0.0)
# svm.setC(0)
# svm.setNu(0.0)
# svm.setP(0.0)
# svm.setClassWeights(None)
svm.setTermCriteria((cv2.TERM_CRITERIA_COUNT,100,1.e-06))
svm.train(trainingDataMat,cv2.ml.ROW_SAMPLE,labelsMat)

sample_data = np.array([*your_data*],np.float32)
response = svm.predict(sample_data)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读