2016-08-12 2 views
1

Когда я использую Opencv3 с Python2, мой код должен что-то делать с 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 newaxis, numpy broadcasting

+0

Танки для вашего ответа. Но мой trainData получен так: deskewed = [map (deskew, row) для строки в train_cells] hogdata = [map (hog, row) для строки в справочном] trainData = np.float32 (hogdata) .resape (-1,64) response = 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 -в-opencv3-0 –