CvSVM 未在此范围内声明错误
CvSVM was not declared in this scope Error
我正在使用 OpenCV 3.0.0
我已经包含了所有这些库和命名空间,但我仍然得到 "CvSVM is not declared in this scope"
的错误
#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
也是 [=13= 的类型定义]).
因为 SVM
是一个抽象 class,你不能实例化它。您需要致电 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
我正在使用 OpenCV 3.0.0
我已经包含了所有这些库和命名空间,但我仍然得到 "CvSVM is not declared in this scope"
的错误#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
也是 [=13= 的类型定义]).
因为 SVM
是一个抽象 class,你不能实例化它。您需要致电 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