OpenCV SVM多类分类问题编程示例

本文通过一个简单的C++程序展示了如何利用OpenCV库的CvSVM类进行多类支持向量机(SVM)训练和预测。程序中定义了四类训练数据,采用线性核函数,并在训练完成后对新的二维样本进行分类预测,同时输出了支持向量。
摘要由CSDN通过智能技术生成
// test_max.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <cv.h>
#include <highgui.h>
#include <ml.h>
#include <cxcore.h>

#include <iostream>
using namespace std;

int main()
{
 // step 1:  
//训练数据的分类标记,即4类
 float labels[16] = {1.0, 1.0,1.0,1.0,2.0,2.0,2.0,2.0,3.0,3.0,3.0,3.0,4.0,4.0,4.0,4.0};  
 CvMat labelsMat = cvMat(16, 1, CV_32FC1, labels);  
 //训练数据矩阵
 float trainingData[16][2] = { {0, 0}, {4, 1}, {4, 5}, {-1, 6},{3,11},{-2,10},{4,30},{0,25},{10,13},{15,12},{25,40},{11,35},{8,1},{9,6},{15,5},{20,-1} };  
 CvMat trainingDataMat = cvMat(16, 2, CV_32FC1, trainingData);  
 
 // step 2:  
 //训练参数设定
 CvSVMParams params;  
 params.svm_type = CvSVM::C_SVC;				 //SVM类型
 params.kernel_type = CvSVM::LINEAR;			 //核函数的类型
 
 //SVM训练过程的终止条件, max_iter:最大迭代次数  epsilon:结果的精确性
 params.term_crit = cvTermCriteria(CV_TERMCRIT_ITER, 100, FLT_EPSILON ); 
 
 // step 3:  
 //启动训练过程
 CvSVM SVM; 
  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值