Нарушение доступа в функции CvEM :: getCovs

Я использую cvEm для моделирования гауссовой смеси на двумерных данных.
После вызова функции train она возвращает True (подписывает успешное обучение), а также результаты классификации (имеющие разные кластеры разных цветов) кажутся разумными, но я получаю ошибку нарушения доступа при получении матриц ковариантности кластеров!

Ниже приведены соответствующие строки кода:

    CvEMParams params;
params.covs      = NULL;
params.means     = NULL;
params.weights   = NULL;
params.probs     = NULL;
params.nclusters = NrGMMComponents;
params.cov_mat_type       = CvEM::COV_MAT_GENERIC; // DIAGONAL, GENERIC, SPHERICAL
params.start_step         = CvEM::START_AUTO_STEP;
params.term_crit.max_iter = 300;
params.term_crit.epsilon  = 0.001;
params.term_crit.type     = CV_TERMCRIT_ITER|CV_TERMCRIT_EPS;
//params.term_crit.type     = CV_TERMCRIT_ITER;

// 2.2 Estimate GMM params for all <NrGMMComponents> Gaussian Mixture Components

CvEM em_model;
bool result = em_model.train( samples, Mat(), params, &labels);
vector<cv::Mat> covs;
em_model.getCovs(covs);  ////////////Access Violation here! :(

Я действительно ценю твою помощь. 🙂

0

Решение

Это было решено.

Я нашел другую функцию-член в CvEm под названием get_covs (), и она сработала!
Но я до сих пор не знаю, что не так с функцией getCov ()!

0

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

Других решений пока нет …

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