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

Я использую cvEm для моделирования Gaussian Mixture на 2D-данных. После вызова функции обучения она возвращает 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! :(

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


person user2969007    schedule 08.11.2013    source источник


Ответы (1)


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

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

person user2969007    schedule 08.11.2013