SVM(1)OpenCV实现


初始化数据

 
    int width = 512, height = 512;  
    Mat image = Mat::zeros(height, width, CV_8UC3);  
设置训练数据
    float labels[4] = {1.0, -1.0, -1.0, -1.0};  
    Mat labelsMat(4, 1, CV_32FC1, labels);  
  
    float trainingData[4][2] = { {501, 10}, {255, 10}, {501, 255}, {10, 501} };  
    Mat trainingDataMat(4, 2, CV_32FC1, trainingData);  
SVM初始化
    CvSVMParams params;  
    params.svm_type    = CvSVM::C_SVC;  
    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);  
SVM结果显示
Vec3b green(0,255,0), blue (255,0,0);  
    for (int i = 0; i < image.rows; ++i)  
        for (int j = 0; j < image.cols; ++j)  
        {  
            Mat sampleMat = (Mat_<float>(1,2) << i,j);  
            float response = SVM.predict(sampleMat);  
  
            if (response == 1)  
                image.at<Vec3b>(j, i)  = green;  
            else if (response == -1)  
                 image.at<Vec3b>(j, i)  = 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);  




  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值