2016-04-01 1 views
0

Так что я пытаюсь использовать opencv для создания регрессионной модели.Ошибка запуска OpenCV. Попытка использовать случайную модель леса

Я использую это, но я не могу понять, что это не так: http://pastebin.com/9vEpn4GC

Это всегда бросали это:

OpenCV Error: Unsupported format or combination of formats (type mask must be 8uC1 or 8sC1 array) in cvPreprocessVarType, file ........\opencv\modules\ml\src\inner_functions.cpp, line 519 Traceback (most recent call last):

a.train(save_all[features[i]], cv2.CV_ROW_SAMPLE, Y[:][:, i], params=params, varType=var_types) cv2.error: ........\opencv\modules\ml\src\inner_functions.cpp:519: error: (-210) type mask must be 8uC1 or 8sC1 array in function cvPreprocessVarType

Я попытался найти эту ошибку, но там не так много Результаты. Я предполагаю, что это связано с объявлением var_types.

+2

Как насчет 'var_types = np.array ([cv2.CV_VAR_NUMERICAL] * var_n + [cv2.CV_VAR_ORDERED], np.uint8)'? Это список значений перечисления, имея в виду, что float не имеет смысла. –

+1

И в сообщении об ошибке указано, что «маска типа должна быть массивом 8uC1 или 8sC1», который, как я понял, означает, что он хочет либо беззнаковые, либо подписанные 8-битные значения. –

ответ

1

Массив var_types - это список значений перечисления. Как подсказки сообщения об ошибке, тип данных элементов должен быть байтом, а не плавать.

Следующая следует сделать трюк:

var_types = np.array([cv2.CV_VAR_NUMERICAL] * var_n + [cv2.CV_VAR_ORDERED], np.uint8) 
+0

Да, именно так, впервые используя opencv. Теперь я получаю: Ошибка OpenCV: Плохой аргумент (тип маски должен быть + 1 size) в cvPreprocessVarType –

+0

@ AndréCosta Какова форма 'save_all [features [i]]' прежде чем вы вызовете поезд? Какова форма 'var_types'? У меня нет файлов данных, чтобы попробовать ... –

+0

В этом была проблема с моим var_n, потому что я использовал свою первую форму ввода, не обрабатывая ее до меньших матриц. Я вручную назначил var_n, и теперь все работает :) Большое спасибо за вашу помощь! –