opencv自带SVM分类器使用程序


压缩包含一个完整的Qt控制台工程,注释详细,调试和运行成功,也可以直接移植到win32中运行。
资源截图
代码片段和文件信息
/*****************************
//湖南长沙·2015-11-8
*************************/
#include 
#include “opencv2opencv.hpp“

using namespace cv;

//训练样本:红点、蓝点。待识别数据:绿点
int main(int argc char *argv[])
{
    QCoreApplication a(argc argv);

    // 用于保存可视化数据的矩阵
    Mat image = Mat::zeros(512 512 CV_8UC3);
    for(int i=0;i        for(int j=0;j            if(i                image.ptr(i)[j]=Vec3b(25500);
            else if(i<2*image.rows/3)
                image.ptr(i)[j]=Vec3b(02550);
            else
                image.ptr(i)[j]=Vec3b(00255);
        }
    }

    float labels[3] = {1.0 2.0 3.0};
    Mat labelsMat(3 1 CV_32FC1 labels);
    float trainingData[3][3] = {{25500} {02550} {00255}};
    Mat trainingDataMat(3 3 CV_32FC1 trainingData);
    // 设置SVM参数
    CvSVMParams params;
    params.svm_type    = CvSVM::C_SVC;//C支持向量分类机允许用异常值惩罚因子C进行不完全分类
    params.kernel_type = CvSVM::LINEAR;//使用线性内核
    params.term_crit   = cvTermCriteria(CV_TERMCRIT_ITER 100 1e-6);//迭代训练过程的中止条件
    // 对SVM进行训练
    CvSVM SVM;
    SVM.train(trainingDataMat labelsMat Mat() Mat() params);

    string str1=“blue“str2=“green“str3=“red“;
    for (int i = 100; i < image.rows; i+=image.rows/3){
        int j=10;
        int c0=image.ptr(i)[j][0];
        int c1=image.ptr(i)[j][1];
        int c2=image.ptr(i)[j][2];
        Mat sampleMat = (Mat_(13) << c0c1c2);
        float result = SVM.predict(sampleMat);//进行分类
        //结果处理
        if (result == 1.0)
            putText(imagestr1Point(ji)FONT_HERSHEY_SIMPLEX2Scalar(255255255)28);
        else if(result == 2.0)
            putText(imagestr2Point(ji)FONT_HERSHEY_SIMPLEX2Scalar(255255255)28);
        else if(result == 3.0)
            putText(imagestr3Point(ji)FONT_HERSHEY_SIMPLEX2Scalar(255255255)28);
    }

    imshow(“SVM分类“ image);
    waitKey(0);
    return a.exec();
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2167  2015-11-08 22:53  CvSVMTestSVMmain.cpp

     文件       1256  2015-11-08 22:36  CvSVMTestSVMSVM.pro

     文件      12461  2015-11-08 22:42  CvSVMTestSVMSVM.pro.user

     文件     247507  2015-11-08 22:53  CvSVMTestSVM-build-desktopdebugmain.o

     文件    3989151  2015-11-08 22:53  CvSVMTestSVM-build-desktopdebugSVM.exe

     文件       5954  2015-11-08 22:37  CvSVMTestSVM-build-desktopMakefile

     文件       5564  2015-11-08 22:37  CvSVMTestSVM-build-desktopMakefile.Debug

     文件       5610  2015-11-08 22:37  CvSVMTestSVM-build-desktopMakefile.Release

     目录          0  2015-11-08 22:55  CvSVMTestSVM-build-desktopdebug

     目录          0  2015-11-08 22:55  CvSVMTestSVM-build-desktop
elease

     目录          0  2015-11-08 22:55  CvSVMTestSVM

     目录          0  2015-11-08 22:55  CvSVMTestSVM-build-desktop

     目录          0  2015-11-08 22:55  CvSVMTest

----------- ---------  ---------- -----  ----

              4269670                    13


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)