2013-11-08 4 views
0

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

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

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()!

 Смежные вопросы

  • Нет связанных вопросов^_^