Python 如何格式化列表,将其作为opencv3.0中svm.train()的输入

Python 如何格式化列表,将其作为opencv3.0中svm.train()的输入,python,opencv,numpy,image-processing,svm,Python,Opencv,Numpy,Image Processing,Svm,我使用的是opencv3.0,我的IDE是pycharm 我有两个列表,一个是训练集列表,一个是训练标签列表。 training_set是一组列表,如 [array([119, 122, 91, ..., 185, 80, 255], dtype=uint8), array([112, 106, 120, ..., 121, 138, 255], dtype=uint8), ....... ] training_labels是training_集合中每个列表的标签列表 [1, 1, 1

我使用的是opencv3.0,我的IDE是pycharm

我有两个列表,一个是训练集列表,一个是训练标签列表。 training_set是一组列表,如

[array([119, 122,  91, ..., 185,  80, 255], dtype=uint8), array([112, 106,   120, ..., 121, 138, 255], dtype=uint8), ....... ]
training_labels是training_集合中每个列表的标签列表

[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()时

我得到了这个错误

trainingdata =  map(int, training_set)
TypeError: only length-1 arrays can be converted to Python scalars

如何正确格式化我的数据,然后再将其作为svm.train()的输入。

最终我得到了答案。我切换到opencv2.4。我修改了我的代码

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')

现在一切都很完美。

map(int,training\u set)
之后,你希望得到什么?现在,您正试图在
数组([119,…,255],dtype=uint8)
上调用
int
。当然是错误的。@AleksandrKovalev我希望列表将被转换为int。正确的方法是什么?我在谷歌上搜索了一下,最后进入了数组列表。转换后您想要得到什么?纯整数列表?或者整数列表?顺便说一句,你使用python2还是python3?@AleksandrKovalev我想要training_set=列表列表,training_label=training_set中每个列表的标签。当我直接给这个svm.train(training_set,cv2.ml.ROW_SAMPLE,training_label)时,我得到了一个错误:TypeError:samples不是numpy数组,也不是标量
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')