Что такое маска компонента в поезде CvNormalBayesClassifier opencv?

Я тренирую дескрипторы SIFT BOW, используя обычный байесовский классификатор. мои тренировочные данные имеют 79 строк, представляющих каждую строку выборки и 500 столбцов. Данные ответа имеют 79 строк и 1 столбец.
varIdx и sampleIdx равны 0, а update = true.

    CvNormalBayesClassifier classifier = new CvNormalBayesClassifier ();

CvMat val1 = cvCreateMat (1,1, CV_8U);
double [] myarr1 = новый double [1];
myarr1 [0] = 0,0;
val1.put (myarr1);
CvMat val2 = cvCreateMat (1,1, CV_8U);
double [] myarr2 = новый double [1];
myarr2 [0] = 0,0;
val2.put (myarr2);

classifier.train (trainingdata, label, val1, val2, true);

ошибка:

Ошибка OpenCV: размеры входных аргументов не совпадают (маска компонента должна содержать столько же элементов, сколько общее количество входных переменных) в cvPreprocessIndexArray, file .. \ .. \ .. \ .. \ opencv \ modules \ ml \ src \ inner_functions.cpp, строка 426
Исключение в потоке "main" java.lang.RuntimeException: .. \ .. \ .. \ .. \ opencv \ modules \ ml \ src \ inner_functions.cpp: 426: ошибка: (-209) Маска компонента должна содержать столько же элементы как общее количество входных переменных в функции cvPreprocessIndexArray

на com.googlecode.javacv.cpp.opencv_ml $ CvNormalBayesClassifier.train (собственный метод)
в com.cis.project.Recognition.main (Recognition.java:74)

что такое маска компонента?

1

Решение

от документы :

Многие модели ML могут обучаться на выбранном подмножестве признаков и / или на выбранном подмножестве выборок обучающего набора. Чтобы вам было проще, метод train обычно включает параметры var_idx и sample_idx. Первый параметр определяет переменные (характеристики), представляющие интерес, а второй — образцы, представляющие интерес. Оба вектора являются либо целочисленными (CV_32SC1) векторами (списки индексов на основе 0), либо 8-битными (CV_8UC1) масками активных переменных / выборок. Вы можете передавать NULL-указатели вместо одного из аргументов, что означает, что все переменные / выборки используются для обучения.

так, либо передайте ему 1d целое число или uchar Mat той же длины, что и метки / образцы, заполненные 0 и 1, чтобы использовать в качестве маски, или передайте пустой объект (или нулевой указатель, в зависимости от вашего API).

0

Другие решения


По вопросам рекламы [email protected]