簡體   English   中英

我如何格式化我的列表以將其作為 opencv3.0 中 svm.train() 的輸入

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM