OpenCV3 Ref SVM : cv::ml::SVM Class Reference

OpenCV3  Ref SVM : cv::ml::SVM Class Reference

OpenCV2:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/ml/ml.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main()
{
float labels[4] = { 0, 0, 1, 1 }; //训练标签数据,前两个表示男生,后两个表示女生
Mat labelsMat(3, 1, CV_32FC1, labels);

float trainingData[4][2] = { { 186,80 },{ 185,81 },{ 160,50 },{ 161,48 } }; //训练数据,两个维度,表示身高和体重
Mat trainingDataMat(3, 2, CV_32FC1, trainingData);

CvSVMParams params; //SVM参数
params.svm_type = CvSVM::C_SVC; //SVM类型. 这里用C_SVC
params.kernel_type = CvSVM::LINEAR; //SVM 核类型
params.term_crit = cvTermCriteria(CV_TERMCRIT_ITER, 100, 1e-6); //终止条件,最大迭代次数和容许误差

CvSVM SVM;
SVM.train(trainingDataMat, labelsMat, Mat(), Mat(), params);//训练

Mat sampleMat = (Mat_<float>(1, 2) << 184, 79); //测试数据,为一男生
float response = SVM.predict(sampleMat);

if (response == 0)
cout << "Boy" << endl;
else if (response == 1)
cout << "Girl" << endl;

return 0;
}

OpenCV3中的SVM:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/ml/ml.hpp>
#include <iostream>

using namespace cv;
using namespace cv::ml;
using namespace std;

int main()
{
float labels[4] = { 0, 0, 1, 1 }; //训练标签数据
Mat labels_train(4, 1, CV_32F, labels);

float trainingData[4][2] = { { 186,80 },{ 185,81 },{ 160,50 },{ 161,48 } }; //训练数据,两个维度
Mat data_train(4, 2, CV_32F, trainingData);

Ptr<SVM> svm = SVM::create();
svm->setKernel(cv::ml::SVM::KernelTypes::LINEAR);
svm->setType(cv::ml::SVM::Types::C_SVC);
svm->setTermCriteria(TermCriteria( TermCriteria::MAX_ITER + TermCriteria::EPS, 1000, FLT_EPSILON ));

svm->train(data_train, ROW_SAMPLE, labels_train);
//svm->save("SVMmodel"); //存储模型
//Ptr<SVM> svm = StatModel::load<SVM>("SVMmodel"); //读取模型

Mat testData(1,2,CV_32F);//测试数据
Mat responses; //预测结果
testData.at<float>(0,0) = 184;
testData.at<float>(0,1) = 79;
svm->predict(testData, responses);
responses.convertTo(responses,CV_32S);

if (response.at<int>(0,0) == 0)
cout << "Boy" << endl;
else if (response.at<int>(0,0) == 1)
cout << "Girl" << endl;

return 0;
}
---------------------
作者:纯洁可爱小昊昊
来源:CSDN
原文:https://blog.csdn.net/jhszh418762259/article/details/60143152
版权声明:本文为博主原创文章,转载请附上博文链接!

原文地址:https://www.cnblogs.com/shuimuqingyang/p/9863511.html

时间: 2024-10-10 12:32:23

OpenCV3 Ref SVM : cv::ml::SVM Class Reference的相关文章

ML | SVM

What's xxx An SVM model is a representation of the examples as points in space, mapped so that the examples of the separate categories are divided by a clear gap that is as wide as possible. New examples are then mapped into that same space and predi

机器学习:SVM(scikit-learn 中的 SVM:LinearSVC)

一.基础理解 Hard Margin SVM 和 Soft Margin SVM 都是解决线性分类问题,无论是线性可分的问题,还是线性不可分的问题: 和 kNN 算法一样,使用 SVM 算法前,要对数据做标准化处理: 原因:SVM 算法中设计到计算 Margin 距离,如果数据点在不同的维度上的量纲不同,会使得距离的计算有问题: 例如:样本的两种特征,如果相差太大,使用 SVM 经过计算得到的决策边界几乎为一条水平的直线--因为两种特征的数据量纲相差太大,水平方向的距离可以忽略,因此,得到的最大

模式识别之svm()---支持向量机svm 简介1995

转自:http://www.blogjava.net/zhenandaci/archive/2009/02/13/254519.html 作者:Jasper 出自:http://www.blogjava.net/zhenandaci/ (一)SVM的八股简介 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本.非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中[10].支持向量机方法是

SVM→8.SVM实战→3.调节SVM参数

.card { font-family: arial; font-size: 20px; text-align: left; color: black; background-color: white } .cloze { font-weight: bold; color: red } .myCode { font-family: droid sans mono; background-color: #f2f2f2; padding-left: 5px; padding-right: 5px }

[Machine Learning &amp; Algorithm]CAML机器学习系列2:深入浅出ML之Entropy-Based家族

声明:本博客整理自博友@zhouyong计算广告与机器学习-技术共享平台,尊重原创,欢迎感兴趣的博友查看原文. 写在前面 记得在<Pattern Recognition And Machine Learning>一书中的开头有讲到:“概率论.决策论.信息论3个重要工具贯穿着<PRML>整本书,虽然看起来令人生畏…”.确实如此,其实这3大理论在机器学习的每一种技法中,或多或少都会出现其身影(不局限在概率模型). <PRML>书中原话:”This chapter also

[Algorithm &amp; Machine Learning]CAML机器学习系列1:深入浅出ML之Regression家族

声明:本博客整理自博友@zhouyong计算广告与机器学习-技术共享平台,尊重原创,欢迎感兴趣的博友查看原文. 符号定义 这里定义<深入浅出ML>系列中涉及到的公式符号,如无特殊说明,符号含义均按下述定义解释: 符号 含义 \(x_j\) 第\(j\)维特征 \(x\) 一条样本中的特征向量,\(x=(1, x_1, x_2, \cdots, x_n)\) \(x^{(i)}\) 第\(i\)条样本 \(x_{j}^{(i)}\) 第\(i\)条样本的第\(j\)维特征 \(y^{(i)}\)

NET:Error Creating Control -&quot;Object Reference Not Set To An Instance Of Object&quot;

这几天,竟遇见些奇葩问题,有的实在懒的写了,这个比较有意思,以前没见过,写个文章记录下: Error Creating Control -"Object Reference Not Set To An Instance Of Object" 在winforms页面中,所有page的所有服务器控件的位置出现一行红字"Error Creating Control - Object reference not set to an instance of an object"

机器学习(3):支持向量机(SVM)

1. 背景: 1.1 最早是由 Vladimir N. Vapnik 和 Alexey Ya. Chervonenkis 在1963年提出 1.2 目前的版本(soft margin)是由Corinna Cortes 和 Vapnik在1993年提出,并在1995年发表 1.3 深度学习(2012)出现之前,SVM被认为机器学习中近十几年来最成功,表现最好的算法 2. 机器学习的一般框架: 训练集 => 提取特征向量 => 结合一定的算法(分类器:比如决策树,KNN)=>得到结果 总共可

支持向量机(SVM:support vector machine)

传统机器学习分类任务中,我认为支持向量机是最难.最复杂.最有效的一种模型.可能是由于其是一种特殊的神经网络的缘故吧! 1.支持向量机简介 支持向量机(support vector machines,SVM)是一种二类分类模型.它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机:支持向量机还包括核技巧,这使它成为实质上的非线性分类器.支持向量机的学习策略就是间隔最大化,可形式化为一个求解凸二次规划(convex quadratic programming,不怕,附录有解