python - 我如何格式化我的列表以将其作为 opencv3.0 中 svm.train() 的输入

标签 python opencv numpy image-processing svm

我用的是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() 的输入之前如何正确格式化我的数据

最佳答案

最后我得到了答案。我切换到 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')

现在一切都很完美。

关于python - 我如何格式化我的列表以将其作为 opencv3.0 中 svm.train() 的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36110924/

相关文章:

python - input()::使用退格键和箭头键

Python - 等待来自大量套接字的输入

具有自适应背景、静态对象的 OpenCV 前景检测

python - 为 OpenCV imshow 连接 Numpy 数组

python - 在django admin中上传文件,通过公共(public)站点下载

opencv - 图像处理的关键点是什么?

math - 旋转矩阵openCV

python - 结构子类列表在转换为 numpy 数组时返回错误值

python numpy 成对编辑距离

python - GAE 中的 worker 角色和 Web 角色对应