OpenCV SVM
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/ml/ml.hpp> using namespace cv; int main()
{
// Data for visual representation
int width = , height = ;
Mat image = Mat::zeros(height, width, CV_8UC3); // Set up training data
float labels[] = { 1.0, -1.0, -1.0, -1.0, 1.0 };
Mat labelsMat(, , CV_32FC1, labels); float trainingData[][] = { { , }, { , }, { , }, { , }, { , } };
Mat trainingDataMat(, , CV_32FC1, trainingData); //设置支持向量机的参数
CvSVMParams params;
params.svm_type = CvSVM::C_SVC;//SVM类型:使用C支持向量机
params.kernel_type = CvSVM::LINEAR;//核函数类型:线性
params.term_crit = cvTermCriteria(CV_TERMCRIT_ITER, , 1e-);//终止准则函数:当迭代次数达到最大值时终止 //训练SVM
//建立一个SVM类的实例
CvSVM SVM;
//训练模型,参数为:输入数据、响应、XX、XX、参数(前面设置过)
SVM.train(trainingDataMat, labelsMat, Mat(), Mat(), params); Vec3b green(, , ), blue(, , );
//显示判决域
for (int i = ; i < image.rows; ++i)
for (int j = ; j < image.cols; ++j)
{
Mat sampleMat = (Mat_<float>(, ) << i, j);
//predict是用来预测的,参数为:样本、返回值类型(如果值为ture而且是一个2类问题则返回判决函数值,否则返回类标签)、
float response = SVM.predict(sampleMat); if (response == )
image.at<Vec3b>(j, i) = green;
else if (response == -)
image.at<Vec3b>(j, i) = blue;
} //画出训练数据
int thickness = -;
int lineType = ;
circle(image, Point(, ), , Scalar(, , ), thickness, lineType);//画圆
circle(image, Point(, ), , Scalar(, , ), thickness, lineType);
circle(image, Point(, ), , Scalar(, , ), thickness, lineType);
circle(image, Point(, ), , Scalar(, , ), thickness, lineType);
circle(image, Point(, ), , Scalar(, , ), thickness, lineType); //显示支持向量
thickness = ;
lineType = ;
//获取支持向量的个数
int c = SVM.get_support_vector_count(); for (int i = ; i < c; ++i)
{
//获取第i个支持向量
const float* v = SVM.get_support_vector(i);
//支持向量用到的样本点,用灰色进行标注
circle(image, Point((int)v[], (int)v[]), , Scalar(, , ), thickness, lineType);
} imwrite("result.png", image); // save the image imshow("SVM Simple Example", image); // show it to the user
waitKey(); }
OpenCV SVM的更多相关文章
- opencv SVM多分类 人脸识别
上一篇介绍了OPENCV中SVM的简单使用,以及自带的一个二分类问题. 例子中的标签是程序手动写的,输入也是手动加的二维坐标点. 对于复杂问题就必须使用数据集中的图片进行训练,标签使用TXT文件或程序 ...
- 学习OpenCV——SVM
学习OpenCV——SVM 学习SVM,首先通过http://zh.wikipedia.org/wiki/SVM, 再通过博客http://blog.csdn.net/yang_xian521/art ...
- 学习OpenCV——SVM 手写数字检测
转自http://blog.csdn.net/firefight/article/details/6452188 是MNIST手写数字图片库:http://code.google.com/p/supp ...
- OPENCV SVM介绍和自带例子
依据机器学习算法如何学习数据可分为3类:有监督学习:从有标签的数据学习,得到模型参数,对测试数据正确分类:无监督学习:没有标签,计算机自己寻找输入数据可能的模型:强化学习(reinforcement ...
- [code segments] OpenCV3.0 SVM with C++ interface
talk is cheap, show you the code: /***************************************************************** ...
- 支持向量机(理论+opencv实现)
从基础开始讲起,没有这些东西看支持向量机真的很难! 1.拉格朗日乘子(Lagrangemultiplier) 假设需要求极值的目标函数(objectivefunction)为f(x,y),限制 ...
- libsvm Minist Hog 手写体识别
统计手写数字集的HOG特征 转载请注明出处,楼燚(yì)航的blog,http://www.cnblogs.com/louyihang-loves-baiyan/ 这篇文章是模式识别的小作业,利用sv ...
- 【OpenCV】opencv3.0中的SVM训练 mnist 手写字体识别
前言: SVM(支持向量机)一种训练分类器的学习方法 mnist 是一个手写字体图像数据库,训练样本有60000个,测试样本有10000个 LibSVM 一个常用的SVM框架 OpenCV3.0 中的 ...
- opencv学习笔记(七)SVM+HOG
opencv学习笔记(七)SVM+HOG 一.简介 方向梯度直方图(Histogram of Oriented Gradient,HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子 ...
随机推荐
- WPF vs2015,vs2012 添加ArcObjects SDK
一:如果是vs2015,找到注册表中HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0\下面的这两个,并且将名称和数 ...
- Linux的用户
添加用户 添加删除用户 # useradd user # passwd user Changing password for user user. New password: BAD PASSWORD ...
- SecureCRT连接linux,Hive中无法使用删除键
- Geany 编辑器打开 高亮所选单词 功能
Geany 编辑器打开 高亮所选单词 功能 在Ubuntu 系统的Software Center 工具中,搜索到geany, 下方有个 Miscellanous Plugins for Geany, ...
- 21.scrapy爬虫部署
1.启用 scrapyd 2. 在浏览器打开127.0.0.1:6800/ 3. scrapy.cfg 设置 4. 遇到问题: scrapyd-deploy 不是内部命令 编辑 两个配置文件 @ech ...
- Android 组合控件
前言 自定义组合控件就是多个控件组合起来成为一个新的控件,主要用来解决多次重复的使用同一类型的布局.比如我们应用的顶部的标题栏,还有弹出的固定样式的dialog,这些都是常用的,所以把他们所需要的控件 ...
- 完美解决ubuntu下sublime中文输入问题
声明 1.本人整理文章,转载请注明出处. 2.参考资料 http://my.oschina.net/tsl0922/blog/113495 问题描述 在ubuntu下想使用sublime,但是不能输入 ...
- 软件工程第三个程序:“WC项目” —— 文件信息统计(Word Count ) 命令行程序
软件工程第三个程序:“WC项目” —— 文件信息统计(Word Count ) 命令行程序 格式:wc.exe [parameter][filename] 在[parameter]中,用户通过输入参数 ...
- vue.js 组件引用之初级 之二
1. template 标签也可以实现替换,这样可以省去script标签了 <!DOCTYPE html> <html lang="en"> <hea ...
- kbengine:简单介绍
之前想分析一个开源服务器很久了,思前想后,还是选择了kbengine. KBEngine的服务端底层框架使用c++编写,游戏逻辑层使用Python(支持热更新).现在服务器大多数是用C++做的,pyt ...