错误:整数值Opencv Python-SVM中需要

2024-03-28 09:52:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我用Python中的Opencv编写了一个使用SVM训练特定数据集的代码(这只是整个代码的一部分)。在

svm_params = dict( kernel_type = cv2.ml.SVM_LINEAR ,svm_type = cv2.ml.SVM_C_SVC,C=2.67, gamma=3 )
svm = cv2.ml.SVM_create()
trainingData,labels = getTrainingData()
svm.train(trainingData, labels, params=svm_params)
svm.save('svm_data.dat')

trainingData和labels分别是特性和响应的列表。 当我试图运行代码时,我得到一个错误,它说:

^{pr2}$

然后我试图将训练数据、标签的列表转换成numpy数组。在

这是我将它们转换为numpy数组时的代码:

svm_params = dict( kernel_type = cv2.ml.SVM_LINEAR ,svm_type = cv2.ml.SVM_C_SVC,C=2.67, gamma=3 )
svm = cv2.ml.SVM_create()
trainingData,labels = getTrainingData()
trainData = np.asarray(trainingData)
responses = np.asarray(labels)
svm.train(trainData, responses, params=svm_params)
svm.save('svm_data.dat')

然后它给出了另一个错误:

Traceback (most recent call last):
  File "C:\Python27\Python\fc.py", line 155, in <module>
    svm.train(trainData, responses, params=svm_params)
TypeError: only length-1 arrays can be converted to Python scalars

训练数据和标签是特征及其相应的响应。我尝试打印培训数据和标签:培训数据的前几行是:

 [0, 300, 866, 214, 120, 38] [[0, 140, 1620, 276, 162, 18], [0, 111, 1085, 207, 132, 12], [0, 102, 570, 174, 102, 10],.. 

标签:

 [[1], [1], [1], [1], [1], [1],...

为了使代码成功地训练数据,我应该做哪些更改?在


Tags: 数据代码labelstypetrain标签paramsresponses