0

我在寻求帮助。由于 EM 类,我无法构建我的项目。我使用 opencv 2.4.2

我找不到问题出在哪里。有人可以建议吗?

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);

最后一行得到 LINK ERR,我不知道如何创建 EM 类的对象。NClusters 是 int,还有什么问题?

我用过:#include "opencv2/ml/ml.hpp"

此代码会导致以下错误:

2 错误 LNK2019: 无法解析的外部符号“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) 在函数 "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) 在函数“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) 在函数“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(??0EM@cv@@QEAA@HHAEBVTermCriteria@1@@Z) 在函数“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(??0EM@cv@@QEAA@HHAEBVTermCriteria@1@@Z) 在函数“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

非常感谢

4

2 回答 2

1

尝试使用这个-

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);
于 2013-04-04T16:48:29.500 回答
0

干得好

#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;
}
于 2014-12-16T03:07:00.217 回答