Reputation: 517
I'm asking for help. I cannot build my project because of EM class. I use opencv 2.4.2
I cannot find where the problem is. Could someone advice?
cv::TermCriteria Termination;
Termination.type=CV_TERMCRIT_ITER;
Termination.maxCount=num_numIter;
cv::EM model=cv::EM(NClusters,cv::EM::COV_MAT_SPHERICAL,Termination);
model.train(groupped_one_person_features);
At last line a get LINK ERR, I don't know how to create object of class EM. NClusters is int, what else can be wrong?
I have used: #include "opencv2/ml/ml.hpp"
This code results in these errors:
2 error LNK2019: unresolved external symbol "public: virtual bool __cdecl cv::EM::train(class cv::_InputArray const &,class cv::_OutputArray const &,class cv::_OutputArray const &,class cv::_OutputArray const &)" (?train@EM@cv@@UEAA_NAEBV_InputArray@2@AEBV_OutputArray@2@11@Z) referenced in function "void __cdecl compute_LBPH_patterns_EM(struct ArrayData *,struct Pattern *,int,int)" (?compute_LBPH_patterns_EM@@YAXPEAUArrayData@@PEAUPattern@@HH@Z) D:\Work\EBIS2012CPlusPlus\Imet_v1.0_x64\Imet_v1.0_x64\compute_patterns.obj AND Error 1 error LNK2019: unresolved external symbol "public: virtual __cdecl cv::EM::~EM(void)" (??1EM@cv@@UEAA@XZ) referenced in function "void __cdecl compute_LBPH_patterns_EM(struct ArrayData *,struct Pattern *,int,int)" (?compute_LBPH_patterns_EM@@YAXPEAUArrayData@@PEAUPattern@@HH@Z) D:\Work\EBIS2012CPlusPlus\Imet_v1.0_x64\Imet_v1.0_x64\compute_patterns.obj AND Error 3 error LNK2019: unresolved external symbol "public: __cdecl cv::EM::EM(int,int,class cv::TermCriteria const &)" (??0EM@cv@@QEAA@HHAEBVTermCriteria@1@@Z) referenced in function "void __cdecl compute_LBPH_patterns_EM(struct ArrayData *,struct Pattern *,int,int)" (?compute_LBPH_patterns_EM@@YAXPEAUArrayData@@PEAUPattern@@HH@Z) D:\Work\EBIS2012CPlusPlus\Imet_v1.0_x64\Imet_v1.0_x64\compute_patterns.obj
Thanks a lot
Upvotes: 0
Views: 1108
Reputation: 2877
Here you go
#include <opencv2\opencv.hpp>
using namespace cv; //use the opencv namespace
EM em_model; //EM model
int main()
{
//get samples
Mat samples;
//define and crate ternmination critaria
int type = TermCriteria::COUNT + TermCriteria::EPS;
int maxCount = EM::DEFAULT_MAX_ITERS;
TermCriteria termCritaria = TermCriteria(type, maxCount, FLT_EPSILON);
//define EM parameters and instantiate model
int nclusters = EM::DEFAULT_NCLUSTERS;
int covMatrix_type = EM::COV_MAT_DEFAULT;
em_model = EM(nclusters, covMatrix_type, termCritaria);
//train EM model
em_model.train(samples);
return 0;
}
Upvotes: 0
Reputation: 1469
try using this-
using namespace cv;
EM em_model;
const TermCriteria term_crit = TermCriteria(TermCriteria::COUNT+TermCriteria::EPS,
100, FLT_EPSILON);
em_model = EM(clustercount, EM::COV_MAT_DIAGONAL, term_crit);
em_model.train(samples, loghood, labels, probs);
Upvotes: 1