![](/img/trans.png)
[英]error C2248: 'CvSVM::CvSVM' : cannot access private member declared in class 'CvSVM'
[英]CvSVM was not declared in this scope Error
我正在使用OpenCV 3.0.0
我已經包含了所有這些庫和命名空間,但我仍然得到“CvSVM未在此范圍內聲明”的錯誤
#include <opencv2/core.hpp>
#include <opencv2/imgproc.hpp>
#include "opencv2/imgcodecs.hpp"
#include <opencv2/highgui.hpp>
#include <opencv2/ml.hpp>
using namespace cv;
using namespace cv::ml;
using namespace std;
當我運行此代碼時:
CvSVM svm;
我收到了錯誤。
在OpenCV 3.0中, CvSVM
已重命名為SVM
並移至命名空間cv::ml
(實際上在先前版本中, SVM
也是CvSVM
的typedef)。
由於SVM
是一個抽象類,因此無法實例化它。 你需要調用SVM::create()
。
所以你需要這樣做:
cv::Ptr<cv::ml::SVM> svm = cv::ml::SVM::create();
或者干脆:
using namespace cv;
using namespace cv::ml;
...
Ptr<SVM> svm = SVM::create();
你不再需要CvSVMParams
了。 只需將參數直接設置為svm
:
Ptr<SVM> svm = SVM::create();
svm->setType(SVM::C_SVC);
svm->setKernel(SVM::RBF);
// etc
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.