OpenCV无法设置SVM参数

Piiinkyy

我刚刚开始使用C ++ OpenCV学习SVM,并且在这里参考了SVM文档我想尝试链接中的示例源代码以首先熟悉它,但是我无法运行该示例源代码。它返回错误:

错误1错误C2065:“ CvSVMParams”:未声明的标识符

我正在将Visual Studio 2012与OpenCV 3.0.0一起使用。设置过程应该正确,因为除此以外,所有其他代码都可以正常工作。

三木

从OpenCV 2.4到OpenCV 3.0发生了很多变化其中包括机器学习模块,它不向后兼容。

这是SVM的OpenCV教程代码,是OpenCV 3.0的更新:

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

int main(int, char**)
{
    // Data for visual representation
    int width = 512, height = 512;
    Mat image = Mat::zeros(height, width, CV_8UC3);

    // Set up training data
    int labels[4] = { 1, -1, -1, -1 };
    Mat labelsMat(4, 1, CV_32SC1, labels);

    float trainingData[4][2] = { { 501, 10 }, { 255, 10 }, { 501, 255 }, { 10, 501 } };
    Mat trainingDataMat(4, 2, CV_32FC1, trainingData);

    // Set up SVM's parameters
    Ptr<SVM> svm = SVM::create();
    svm->setType(SVM::C_SVC);
    svm->setKernel(SVM::LINEAR);
    svm->setTermCriteria(TermCriteria(TermCriteria::MAX_ITER, 100, 1e-6));

    // Train the SVM with given parameters
    Ptr<TrainData> td = TrainData::create(trainingDataMat, ROW_SAMPLE, labelsMat);
    svm->train(td);

    // Or train the SVM with optimal parameters
    //svm->trainAuto(td);

    Vec3b green(0, 255, 0), blue(255, 0, 0);
    // Show the decision regions given by the SVM
    for (int i = 0; i < image.rows; ++i)
        for (int j = 0; j < image.cols; ++j)
        {
            Mat sampleMat = (Mat_<float>(1, 2) << j, i);
            float response = svm->predict(sampleMat);

            if (response == 1)
                image.at<Vec3b>(i, j) = green;
            else if (response == -1)
                image.at<Vec3b>(i, j) = blue;
        }

    // Show the training data
    int thickness = -1;
    int lineType = 8;
    circle(image, Point(501, 10), 5, Scalar(0, 0, 0), thickness, lineType);
    circle(image, Point(255, 10), 5, Scalar(255, 255, 255), thickness, lineType);
    circle(image, Point(501, 255), 5, Scalar(255, 255, 255), thickness, lineType);
    circle(image, Point(10, 501), 5, Scalar(255, 255, 255), thickness, lineType);

    // Show support vectors
    thickness = 2;
    lineType = 8;
    Mat sv = svm->getSupportVectors();

    for (int i = 0; i < sv.rows; ++i)
    {
        const float* v = sv.ptr<float>(i);
        circle(image, Point((int)v[0], (int)v[1]), 6, Scalar(128, 128, 128), thickness, lineType);
    }

    imwrite("result.png", image);        // save the image

    imshow("SVM Simple Example", image); // show it to the user
    waitKey(0);

}

输出应如下所示:

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

opencv(SVM)-参数nu超出范围

来自分类Dev

C ++ OpenCV SVM预测无法正常工作

来自分类Dev

C ++ OpenCV SVM预测无法正常工作

来自分类Dev

训练SVM时发生OpenCV错误(错误参数)

来自分类Dev

无法动态设置setVisibility()参数

来自分类Dev

无法设置Matlab类的参数

来自分类Dev

opencv人脸检测参数设置

来自分类Dev

Opencv 3 SVM培训

来自分类Dev

SVM培训C ++ OpenCV

来自分类Dev

OpenCV SVM内核样本

来自分类Dev

SVM培训OpenCV

来自分类Dev

在Python上使用OpenCV选择最佳的SVM内核类型和参数

来自分类Dev

调整参数SVM

来自分类Dev

SVM参数调整

来自分类Dev

调整参数SVM

来自分类Dev

PyOpenCL,无法设置参数。无效的值

来自分类Dev

Pymongo无法为设置的参数编码对象

来自分类Dev

Pymongo无法为设置的参数编码对象

来自分类Dev

OpenCV Haar分类器-是SVM

来自分类Dev

无法运行PHP :: SVM

来自分类Dev

如何调整SVM Rank的参数?

来自分类Dev

无法在OpenCV的hog.detectMultiScale(python)中调整分组设置

来自分类Dev

OpenCV SVM:更新经过培训的SVM

来自分类Dev

OpenCV SVM:更新经过培训的SVM

来自分类Dev

作为参数传递时无法设置module.exports

来自分类Dev

无法解析参考豆“的entityManagerFactory”,同时设置构造函数的参数;

来自分类Dev

mailto命令行无法设置其他参数

来自分类Dev

无法设置Hibernate中的通用生成器参数

来自分类Dev

函数.C-参数设置无法编译