我如何格式化我的列表以将其作为opencv3.0中svm.train()的输入 [英] How can i format my list to give it as input to svm.train() in opencv3.0
问题描述
我正在使用opencv3.0,我的IDE是pycharm
I am using opencv3.0,My IDE is pycharm
我有两个列表,一个是training_set列表,另一个是trainig_labels列表. training_set是类似清单的列表
I have two lists one list of training_set and one list of trainig_labels. training_set is a list of lists like
[array([119, 122, 91, ..., 185, 80, 255], dtype=uint8), array([112, 106, 120, ..., 121, 138, 255], dtype=uint8), ....... ]
training_labels是training_set中每个列表的标签列表.training_labels看起来像
training_labels is list of labels for each list in training_set.training_labels looks like
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
但是当我尝试将其传递给svm.train()
But when i try to pass this to svm.train()
svm = cv2.ml.SVM_create()
trainingdata = map(int, training_set)
responses = map(int, training_labels)
svm.train(trainingdata,responses,params=svm_params)
svm.save('svm_data.dat')
我收到此错误
trainingdata = map(int, training_set)
TypeError: only length-1 arrays can be converted to Python scalars
在将数据作为svm.train()输入之前如何正确格式化数据
How to format my data correctly before giving it as input to svm.train()
推荐答案
最后我得到了答案.我切换到opencv2.4.我将代码修改为
Finaly i got the answer.I switched to opencv2.4.I modifed my code as
trainData=np.float32(training_set)
responses=np.float32(training_labels)
svm = cv2.SVM()
svm.train(trainData,responses, params=svm_params)
svm.save('svm_data.dat')
现在一切都完美了.
这篇关于我如何格式化我的列表以将其作为opencv3.0中svm.train()的输入的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!