2016-08-12 59 views
1

當我在Python2中使用Opencv3時,我的代碼是使用SVM進行一些操作。OpenCV3 Python,svm.train()TypeError

但是錯誤所示:

svm.train(trainData,responses,params = svm_params) TypeError: only length-1 arrays can be converted to Python scalars

回答

0

發生該錯誤的原因的功能期待一個單個陣列對象,並trainData變量包含多個陣列對象。有幾種方法來解決這個問題,其中之一是,如果說你的輸入對象是:

# Used for creating training samples for a logic gate (eg: xor) NN 
trainData = np.random.randint(2,size=2) 
# array([ ..some values.. ]) 

然後添加[np.newaxis]將其

np.random.randint(2,size=2)[np.newaxis] 
# array([[ ..some values.. ]]) 

見:numpy newaxisnumpy broadcasting

+0

坦克爲您的答覆。但我的火車數據是這樣得到的: deskewed = [在train_cells中的行的地圖(歪斜,行)] hogdata = [地圖(豬,行)在歪斜的行中] trainData = np.float32(hogdata).reshape -1,64) responses = np.float32(np.repeat(np.arange(10),250)[:, np.newaxis]) 問題仍然是退出。你能幫我解決這個問題嗎? –

+0

這是另一個可能有用的答案: http://stackoverflow.com/questions/36110924/how-can-i-format-my-list-to-give-it-as-input-to-svm-train -in-opencv3-0 –