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
版权声明:本文为博主原创文章,转载请附上博文链接!
OpenCV3 Ref SVM : cv::ml::SVM Class Reference的更多相关文章
- Unknown/unsupported SVM type in function 'cv::ml::SVMImpl::checkParams'
1.在使用PYTHON[Python 3.6.8]训练样本时报错如下: Traceback (most recent call last): File "I:\Eclipse\Python\ ...
- SVM:从理论到OpenCV实践
(转载请注明出处:http://blog.csdn.net/zhazhiqiang/ 未经允许请勿用于商业用途) 一.理论 参考网友的博客: (1)[理论]支持向量机1: Maximum Marg ...
- 机器学习:SVM(scikit-learn 中的 SVM:LinearSVC)
一.基础理解 Hard Margin SVM 和 Soft Margin SVM 都是解决线性分类问题,无论是线性可分的问题,还是线性不可分的问题: 和 kNN 算法一样,使用 SVM 算法前,要对数 ...
- 机器学习:SVM(目标函数推导:Hard Margin SVM、Soft Margin SVM)
一.Hard Margin SVM SVM 的思想,最终用数学表达出来,就是在优化一个有条件的目标函数: 此为 Hard Margin SVM,一切的前提都是样本类型线性可分: 1)思想 SVM 算法 ...
- Python机器学习笔记:SVM(1)——SVM概述
前言 整理SVM(support vector machine)的笔记是一个非常麻烦的事情,一方面这个东西本来就不好理解,要深入学习需要花费大量的时间和精力,另一方面我本身也是个初学者,整理起来难免思 ...
- 支持向量机(Support Vector Machine,SVM)—— 线性SVM
支持向量机(Support Vector Machine,简称 SVM)于 1995 年正式发表,由于其在文本分类任务中的卓越性能,很快就成为机器学习的主流技术.尽管现在 Deep Learnin ...
- 模式识别之svm()---支持向量机svm 简介1995
转自:http://www.blogjava.net/zhenandaci/archive/2009/02/13/254519.html 作者:Jasper 出自:http://www.blogjav ...
- [Machine Learning & Algorithm]CAML机器学习系列2:深入浅出ML之Entropy-Based家族
声明:本博客整理自博友@zhouyong计算广告与机器学习-技术共享平台,尊重原创,欢迎感兴趣的博友查看原文. 写在前面 记得在<Pattern Recognition And Machine ...
- [Machine Learning & Algorithm]CAML机器学习系列1:深入浅出ML之Regression家族
声明:本博客整理自博友@zhouyong计算广告与机器学习-技术共享平台,尊重原创,欢迎感兴趣的博友查看原文. 符号定义 这里定义<深入浅出ML>系列中涉及到的公式符号,如无特殊说明,符号 ...
随机推荐
- 牛客NOIPtg day5 B-demo的gcd
一句话题意:给定长度为n的序列,求任意两两之间gcd的积mod 998244353的值. 好像是莫比乌斯反演板子题???(反正noip估计不考这种毒瘤 考场上想到一个类似正解的思路 好像摊下来最多处理 ...
- 虚拟机字节码指令表 JVM
虚拟机字节码指令表 标签(空格分隔): Java基础 JVM 记录虚拟机字节码指令,方便分析.以下内容来自<深入理解Java虚拟机> 字节码 助记符 指令含义 0x00 nop 什么都不做 ...
- Linux 命令 - mknod
mknod 创建块设备或者字符设备文件.此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. 1.语法 mknod [选项] 设备名 设备类 ...
- C语言学习巩固(泛型选择)
在程序设计中,没有特定类型,但是一旦指定一种类型,就可以转换成指定类型的代码, 例如C++有一个关键tmeplate关键字用于声明模板,而模板的最大应用便是创建泛型算法.可惜的是c没有这个关键字 但是 ...
- Windows和linux命令行快捷键
Powershell的快捷键和cmd,linux中的shell,都比较像. ALT+F7 清除命令的历史记录 PgUp PgDn 显示当前会话的第一个命令和最后一个命令 Enter 执行当前命令 En ...
- GNS3 模拟免费ARP
R2 : conf t int f0/0 no shutdown ip add 192.168.1.254 255.255.255.0 end R1 : conf t int f0/0 no shut ...
- Linux-kernel-timeline
Linux kernel Protocol Location HTTP https://www.kernel.org/pub/ GIT https://git.kernel.org/ RSYNC rs ...
- Day7 - A - Visible Lattice Points POJ - 3090
A lattice point (x, y) in the first quadrant (x and y are integers greater than or equal to 0), othe ...
- Spring的AOP开发(基于AspectJ的XML方式)
Spring的AOP的简介: AOP思想最早是由AOP联盟组织提出的.Spring是使用这种思想最好的框架 Spring的AOP有自己实现的方式(非常繁琐). Aspect是一个AOP的框架, Spr ...
- 066、Java面向对象之以分步的方式实例化对象
01.代码如下: package TIANPAN; class Book { // 定义一个新的类 String title; // 书的名字 double price; // 书的价格 public ...