【发布时间】:2016-07-06 18:35:20
【问题描述】:
我用的是opencv3.0,我的IDE是pycharm
我有两个列表,一个是 training_set 列表,一个是 trainig_labels 列表。 training_set 是一个列表列表,如
[array([119, 122, 91, ..., 185, 80, 255], dtype=uint8), array([112, 106, 120, ..., 121, 138, 255], dtype=uint8), ....... ]
training_labels 是 training_set.training_labels 中每个列表的标签列表
[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()
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() 的输入之前正确格式化数据
【问题讨论】:
-
map(int, training_set)之后你期望得到什么?现在您正尝试在array([119, ..., 255], dtype=uint8)上致电int。当然是错的。 -
@AleksandrKovalev 我期待该列表将被转换为 int。什么是正确的方法?我用谷歌搜索并最终找到了stackoverflow.com/questions/7368789/…
-
你有数组列表。转换后你想得到什么?简单的整数列表?还是整数列表?
-
顺便说一句,你用python2还是python3?
-
@AleksandrKovalev 我想要 trainining_set=list of lists,training_label=training_set 中每个列表的标签。当我直接给这个 svm.train(training_set,cv2.ml.ROW_SAMPLE,training_labels) 我收到错误:TypeError: samples 不是 numpy 数组,也不是标量
标签: python opencv numpy image-processing svm