[英]How can i format my list to give it as input to svm.train() in opencv3.0
我使用的是 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')
現在一切都很完美。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.