在opencv3中实现机器学习之:利用正态贝叶斯分类
opencv3.0版本中,实现正态贝叶斯分类器(Normal Bayes Classifier)分类实例
#include "stdafx.h"
#include "opencv2/opencv.hpp"
using namespace cv;
using namespace cv::ml; int main(int, char**)
{
int width = , height = ;
Mat image = Mat::zeros(height, width, CV_8UC3); //创建窗口可视化 // 设置训练数据
int labels[] = { , -, , ,-,,-,,-,- };
Mat labelsMat(, , CV_32SC1, labels); float trainingData[][] = { { , }, { , }, { , }, { , }, { , },
{ , }, { , } , { , } , { , } , { , } };
Mat trainingDataMat(, , CV_32FC1, trainingData); // 创建贝叶斯分类器
Ptr<NormalBayesClassifier> model=NormalBayesClassifier::create(); // 设置训练数据
Ptr<TrainData> tData =TrainData::create(trainingDataMat, ROW_SAMPLE, labelsMat); //训练分类器
model->train(tData); Vec3b green(, , ), blue(, , );
// Show the decision regions given by the SVM
for (int i = ; i < image.rows; ++i)
for (int j = ; j < image.cols; ++j)
{
Mat sampleMat = (Mat_<float>(, ) << j, i); //生成测试数据
float response = model->predict(sampleMat); //进行预测,返回1或-1 if (response == )
image.at<Vec3b>(i, j) = green;
else if (response == -)
image.at<Vec3b>(i, j) = blue;
} // 显示训练数据
int thickness = -;
int lineType = ;
Scalar c1 = Scalar::all(); //标记为1的显示成黑点
Scalar c2 = Scalar::all(); //标记成-1的显示成白点
//绘图时,先宽后高,对应先列后行
for (int i = ; i < labelsMat.rows; i++)
{
const float* v = trainingDataMat.ptr<float>(i); //取出每行的头指针
Point pt = Point((int)v[], (int)v[]);
if (labels[i] == )
circle(image, pt, , c1, thickness, lineType);
else
circle(image, pt, , c2, thickness, lineType); } imshow("normal Bayessian classifier Simple Example", image); // show it to the user
waitKey(); }

如果将数据换成是图片的像素值 ,则可实现图片的分类。
在opencv3中实现机器学习之:利用正态贝叶斯分类的更多相关文章
- 在opencv3中的机器学习算法
在opencv3.0中,提供了一个ml.cpp的文件,这里面全是机器学习的算法,共提供了这么几种: 1.正态贝叶斯:normal Bayessian classifier 我已在另外一篇博文中介 ...
- 在opencv3中实现机器学习算法之:利用最近邻算法(knn)实现手写数字分类
手写数字digits分类,这可是深度学习算法的入门练习.而且还有专门的手写数字MINIST库.opencv提供了一张手写数字图片给我们,先来看看 这是一张密密麻麻的手写数字图:图片大小为1000*20 ...
- 在opencv3中实现机器学习之:利用逻辑斯谛回归(logistic regression)分类
logistic regression,注意这个单词logistic ,并不是逻辑(logic)的意思,音译过来应该是逻辑斯谛回归,或者直接叫logistic回归,并不是什么逻辑回归.大部分人都叫成逻 ...
- 在opencv3中实现机器学习之:利用svm(支持向量机)分类
svm分类算法在opencv3中有了很大的变动,取消了CvSVMParams这个类,因此在参数设定上会有些改变. opencv中的svm分类代码,来源于libsvm. #include "s ...
- opencv3中的机器学习算法之:EM算法
不同于其它的机器学习模型,EM算法是一种非监督的学习算法,它的输入数据事先不需要进行标注.相反,该算法从给定的样本集中,能计算出高斯混和参数的最大似然估计.也能得到每个样本对应的标注值,类似于kmea ...
- 在opencv3中的机器学习算法练习:对OCR进行分类
OCR (Optical Character Recognition,光学字符识别),我们这个练习就是对OCR英文字母进行识别.得到一张OCR图片后,提取出字符相关的ROI图像,并且大小归一化,整个图 ...
- OpenCV Machine Learning 之 正态贝叶斯分类器 (Normal Bayes Classifier)
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zhjm07054115/article/details/27631913
- python中Scikit-Learn机器学习模块
Scikit-Learn是基于python的机器学习模块,基于BSD开源许可证.这个项目最早由DavidCournapeau 在2007 年发起的,目前也是由社区自愿者进行维护. Scikit-Lea ...
- R语言中的机器学习包
R语言中的机器学习包 Machine Learning & Statistical Learning (机器学习 & 统计学习) 网址:http://cran.r-project ...
随机推荐
- 比较好用的web打印控件——Lodop
前一段时间公司一项目比较特殊,客户要求打印单必须是淘宝上卖的那种三联打印单.如果还是使用原来系统自带的打印的话,就会造成无法打印出来理想的效果,于是找了下相关的打印控件,比较网络上比较流行的几款插件, ...
- 代码校验工具 SublimeLinter 的安装与使用
SublimeLinter 是 Sublime 的插件,它的作用是检查代码语法是否有错误,并提示.习惯了 IDE 下写代码的人一定需要一款在 Sublime 上类似的语法检查工具.下面我们开始. 安装 ...
- 一步步学敏捷开发:6、Scrum的3种工件
Scrum的3种工件包括:Product Blacklog.Sprint Backlog.完成标准. 1.产品待办事项列表(Product Backlog) 产品Blacklog是Scrum中的核心工 ...
- 手把手集成web端手写公式功能
何为手写公式,很简单,就是在网页上可以写出数学公式,并能够生成Latex格式的字符串.废话不多说,直接走正题. 一.首先大家可以先去官网了解一下myscript这个插件 官方网站:https://de ...
- [QTP/UFT12]无限延长试用期的方法
1. 删除C:\ProgramData隐藏目录下的SafeNet Sentinel文件夹 2.运行QTP安装目录下的bin\instdemo.exe 3. 重新运行QTP/UFT 12后即可恢复30天 ...
- [转载] 关于PreparedStatement.addBatch()方法
Statement和PreparedStatement的区别就不多废话了,直接说PreparedStatement最重要的addbatch()结构的使用. 1.建立链接(打电话拨号) Connecti ...
- Ubuntu16.04安装ROS-kinetic
参考链接:http://www.voidcn.com/blog/wishchin/article/p-5972036.html 第一步: 软件源配置1. 增加下载源(增加ubuntu版的ros数据仓库 ...
- JavaScript中的直接量与初始器的区别
很多代码优化及公司规范都会提到 写对象不应该 var obj = new Object() 而应该 var obj = {} 写数组不应该 var arr = new Array() 而应该 var ...
- private成员变量真的私有吗?(用指针刨他祖坟)
今天写程序时突然想到的,为什么不用指针去获取类的成员变量呢.于是做了这个实验.首先定义了一个类: class Test { private: int i; char c; int* p; public ...
- [转]SQLServer SQL执行效率和性能测试方法总结
本文转自:http://www.zhixing123.cn/net/27495.html 对于做管理系统和分析系统的程序员,复杂SQL语句是不可避免的,面对海量数据,有时候经过优化的某一条语句,可以提 ...