ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

'CvSVM' has not been declared

2020-01-16 14:55:42  阅读:336  来源: 互联网

标签:declared SVM color been dong cpp home detector CvSVM


编译错误

In file included from /home/dong/color/color-detector/test.cpp:7:0:
/home/dong/color/color-detector/colorDetector.cpp:142:35: error: 'CvSVM' has not been declared
 void trainSVM(vector<string> dirs,CvSVM& SVM){
                                   ^
/home/dong/color/color-detector/colorDetector.cpp: In function 'void trainSVM(std::vector<std::__cxx11::basic_string<char> >, int&)':
/home/dong/color/color-detector/colorDetector.cpp:179:5: error: 'CvSVMParams' was not declared in this scope
     CvSVMParams params;
     ^
/home/dong/color/color-detector/colorDetector.cpp:180:5: error: 'params' was not declared in this scope
     params.svm_type    = CvSVM::C_SVC;
     ^
/home/dong/color/color-detector/colorDetector.cpp:180:26: error: 'CvSVM' has not been declared
     params.svm_type    = CvSVM::C_SVC;
                          ^
/home/dong/color/color-detector/colorDetector.cpp:181:26: error: 'CvSVM' has not been declared
     params.kernel_type = CvSVM::POLY;
                          ^
/home/dong/color/color-detector/colorDetector.cpp:187:9: error: request for member 'train' in 'SVM', which is of non-class type 'int'
     SVM.train(trainingData, labels, Mat(), Mat(), params);
         ^
/home/dong/color/color-detector/colorDetector.cpp: At global scope:
/home/dong/color/color-detector/colorDetector.cpp:191:25: error: 'CvSVM' has not been declared
 int testSVM(Mat testImg,CvSVM& SVM){
                         ^
/home/dong/color/color-detector/colorDetector.cpp: In function 'int testSVM(cv::Mat, int&)':
/home/dong/color/color-detector/colorDetector.cpp:194:20: error: request for member 'predict' in 'SVM', which is of non-class type 'int'
     response = SVM.predict(testImg);
                    ^
/home/dong/color/color-detector/test.cpp: In function 'int main()':
/home/dong/color/color-detector/test.cpp:18:5: error: 'CvSVM' was not declared in this scope
     CvSVM SVM;
     ^
/home/dong/color/color-detector/test.cpp:19:5: error: 'SVM' was not declared in this scope
     SVM.load("../modell.xml");


原因

3.4版本OpenCV的分类器代码有很多的改动,命名方式也有所不同

使用定义 cv::ml::SVM SVM;

    // Train the SVM
    Ptr<SVM> svm = SVM::create();
    svm->setType(SVM::C_SVC);
    svm->setKernel(SVM::LINEAR);
    svm->setTermCriteria(TermCriteria(TermCriteria::MAX_ITER, 100, 1e-6));
    svm->train(trainingDataMat, ROW_SAMPLE, labelsMat);



2.4.9版本的分类器定义如下:

// SVM model
class CV_EXPORTS_W CvSVM : public CvStatModel
{
public:
    // SVM type
    enum { C_SVC=100, NU_SVC=101, ONE_CLASS=102, EPS_SVR=103, NU_SVR=104 };

    // SVM kernel type
    enum { LINEAR=0, POLY=1, RBF=2, SIGMOID=3 };

    // SVM params type
    enum { C=0, GAMMA=1, P=2, NU=3, COEF=4, DEGREE=5 };

}

使用定义    CvSVM SVM;


标签:declared,SVM,color,been,dong,cpp,home,detector,CvSVM
来源: https://blog.51cto.com/fengyuzaitu/2467248

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有