我如何格式化我的列表以将其作为opencv3.0中svm.train()的输入 [英] How can i format my list to give it as input to svm.train() in opencv3.0

查看:170
本文介绍了我如何格式化我的列表以将其作为opencv3.0中svm.train()的输入的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆