enum {START_E_STEP=1, START_M_STEP=2, START_AUTO_STEP=0};
CV_WRAP EM(int nclusters=EM::DEFAULT_NCLUSTERS, int covMatType=EM::COV_MAT_DIAGONAL,
- const TermCriteria& termcrit=TermCriteria(TermCriteria::COUNT+
+ const TermCriteria& termCrit=TermCriteria(TermCriteria::COUNT+
TermCriteria::EPS,
EM::DEFAULT_MAX_ITERS, FLT_EPSILON));
///////////////////////////////////////////////////////////////////////////////////////////////////////
-EM::EM(int _nclusters, int _covMatType, const TermCriteria& _criteria)
+EM::EM(int _nclusters, int _covMatType, const TermCriteria& _termCrit)
{
nclusters = _nclusters;
covMatType = _covMatType;
- maxIters = (_criteria.type & TermCriteria::MAX_ITER) ? _criteria.maxCount : DEFAULT_MAX_ITERS;
- epsilon = (_criteria.type & TermCriteria::EPS) ? _criteria.epsilon : 0;
+ maxIters = (_termCrit.type & TermCriteria::MAX_ITER) ? _termCrit.maxCount : DEFAULT_MAX_ITERS;
+ epsilon = (_termCrit.type & TermCriteria::EPS) ? _termCrit.epsilon : 0;
}
EM::~EM()
sample.convertTo(tmp, CV_64FC1);
sample = tmp;
}
+ sample.reshape(1, 1);
Mat probs;
if( _probs.needed() )
if( !initialized )
{
EM obj;
- em_info.addParam(obj, "nclusters", obj.nclusters);
- em_info.addParam(obj, "covMatType", obj.covMatType);
+ em_info.addParam(obj, "nclusters", obj.nclusters, true);
+ em_info.addParam(obj, "covMatType", obj.covMatType, true);
- em_info.addParam(obj, "weights", obj.weights);
- em_info.addParam(obj, "means", obj.means);
- em_info.addParam(obj, "covs", obj.covs);
+ em_info.addParam(obj, "weights", obj.weights, true);
+ em_info.addParam(obj, "means", obj.means, true);
+ em_info.addParam(obj, "covs", obj.covs, true);
initialized = true;
}