[CV笔记]OpenCV机器学习笔记
KNN算法:
目的是分类,具体过程为,先训练,这个训练我估计只是对训练数据进行一个存储,knn测试的过程是根据测试样例找出与这个样例的距离最近的k个点,看这k个点中哪个分类所占的比例比较多,那么这个样例就属于这个分类。所以我们要做的就是确定这个k,这个k是个超参数,所以需要手动测试。
具体使用方式为
1 knn = cv.KNearest() 2 3 knn.train(train_datas,train_labels) 4 5 ret,result,neighbours,dist = knn.find_nearest(test,k=5)
SVM算法:
支持向量机的目的是拟合出一条决策边界,使得边界两端的数据可以被分开从而得到分类的目的,训练的目的就是得到支持向量,支持向量是用来划定边界的,具体我也讲不清楚,但大致是理解的。
使用方法大致如下

1 svm_params = dict( kernel_type = cv2.SVM_LINEAR,
2
3 svm_type = cv2.SVM_C_SVC,
4
5 C=2.67, gamma=5.383 )
6
7 svm = cv.SVM()
8
9 svm.train(train_data,responses,svm_params)
10
11 svm.save("svm_data.dat")
12
13 result = svm.predict_all(test)

要提到的就是这里kernel_type、svm_type、C、gamma
C: 目标函数的惩罚系数C,用来平衡分类间隔margin和错分样本的,default C = 1.0;
kernel:参数选择有RBF, Linear, Poly, Sigmoid, 默认的是”RBF”;
gamma:核函数的系数(‘Poly’, ‘RBF’ and ‘Sigmoid’), 默认是gamma = 1 / n_features;
svm_type 这里用的SVC就是分类
K-Means算法:
假设你要将数据分为2组,那么算法会随机选择两个中心C1和C2,计算每个点到两个中心的距离,如果更接近C1,就标记为0,接近C2,就标记为1,如果更多分组就标记为2、3等等,然后计算所有被标记为0的向量的平均值,用这个平均值作为新的中心,同理标记为1的也是,如此往复,直到两个中心点收敛到固定点,或者我们设定最大迭代次数或达到特定的精度停止,最终会让这些数据点与其对应的之心之间的距离之和最小。
下面是具体使用方法
1 criteria = (cv.TERM_CRITERIA_EPS + cv.TERM_CRITERIA_MAX_ITER,10,1.0) 2 flags = cv.KMEANS_RANDOM_CENTERS 3 compactness,labels,centers = cv.kmeans(z,2,None,criteria,10,flags)
输入的参数依此为
1. samples np.float32类型的训练数据
2. nclusters(K) 需要分类的数目
3. critria 满足终止的条件,满足这个条件,就停止迭代
第一个参数
cv.TERM_CRITERIA_EPS - 达到精度epsilon就停止迭代
cv.TERM_CRITERIA_MAX_ITER - 达到最大迭代次数max_iter就停止迭代
cv.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER - 满足上述任何条件停止迭代
第二个参数
max_iter - 最大迭代次数
第三个参数
epsilon - 要求的精度
4. attempts: 使用flag指定的算法初始执行算法的次数,估计是通过多次初始化得到一个准确值。
5. flags : 指定初始的中心点的方式,通常又两种方式,cv.KMEANS_PP_CENTERS和cv.KMEANS_RANDOM_CENTERS
返回的参数为
1.compactness : 每个点到其相应中心的平方距离之和
2. labels : 标签数组,其中每个元素标记为0、1、2等等
3. centers : 各组集群的中心
[CV笔记]OpenCV机器学习笔记的更多相关文章
- 《Mastering Opencv ...读书笔记系列》车牌识别(II)
http://blog.csdn.net/jinshengtao/article/details/17954427 <Mastering Opencv ...读书笔记系列>车牌识别(I ...
- OpenCV 学习笔记 07 目标检测与识别
目标检测与识别是计算机视觉中最常见的挑战之一.属于高级主题. 本章节将扩展目标检测的概念,首先探讨人脸识别技术,然后将该技术应用到显示生活中的各种目标检测. 1 目标检测与识别技术 为了与OpenCV ...
- OpenCV开发笔记(六十五):红胖子8分钟带你深入了解ORB特征点(图文并茂+浅显易懂+程序源码)
若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...
- opencv学习笔记(六)直方图比较图片相似度
opencv学习笔记(六)直方图比较图片相似度 opencv提供了API来比较图片的相似程度,使我们很简单的就能对2个图片进行比较,这就是直方图的比较,直方图英文是histogram, 原理就是就是将 ...
- opencv学习笔记(五)镜像对称
opencv学习笔记(五)镜像对称 设图像的宽度为width,长度为height.(x,y)为变换后的坐标,(x0,y0)为原图像的坐标. 水平镜像变换: 代码实现: #include <ios ...
- opencv学习笔记(四)投影
opencv学习笔记(四)投影 任选了一张图片用于测试,图片如下所示: #include <cv.h> #include <highgui.h> using namespace ...
- opencv学习笔记(二)寻找轮廓
opencv学习笔记(二)寻找轮廓 opencv中使用findContours函数来查找轮廓,这个函数的原型为: void findContours(InputOutputArray image, O ...
- (转) OpenCV学习笔记大集锦 与 图像视觉博客资源2之MIT斯坦福CMU
首页 视界智尚 算法技术 每日技术 来打我呀 注册 OpenCV学习笔记大集锦 整理了我所了解的有关OpenCV的学习笔记.原理分析.使用例程等相关的博文.排序不分先后,随机整理的 ...
- 《Mastering Opencv ...读书笔记系列》车牌识别(I)
http://blog.csdn.net/jinshengtao/article/details/17883075/ <Mastering Opencv ...读书笔记系列>车牌识别(I ...
随机推荐
- 数据库路由中间件MyCat - 使用篇(3)上篇
此文已由作者张镐薪授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 全局序列号 数据切分后,原有的关系数据库中的主键约束在分布式条件下将无法使用,因此需要引入外部机制保证数据唯 ...
- OVS调试介绍
基本概念 基本命令 ovs-vsctl # ovs-vsctl show 96a55a7e-f49c-4dbe-b359-bafdff2ccad7 Manager "ptcp:6640:92 ...
- 51nod1282(最小表示法&&枚举)
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1282 题意:中文题目诶- 思路:指针不可转,刻盘可转,显然,对 ...
- cf808E(三分)
题目链接:http://codeforces.com/problemset/problem/808/E 题意:给出n个体积为wi, 价值为ci的物品,背包容量为m,求能容纳的最大物品价值,其中 1&l ...
- C 语言实例 - 阶乘
C 语言实例 - 阶乘 一个正整数的阶乘(英语:factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1.自然数n的阶乘写作n!. n!=×××...×n.阶乘亦可以递归方式定义:!=, ...
- JS高级学习历程-8
2 构造函数和普通函数的区别 两者本身没有实质区别,具体看使用 new 函数(); -------->构造函数 函数(); ---------> 普通函数 <!D ...
- CC37:穿点最多的直线
题目 在二维平面上,有一些点,请找出经过点数最多的那条线. 给定一个点集vectorp和点集的大小n,没有两个点的横坐标相等的情况,请返回一个vector,代表经过点数最多的那条直线的斜率和截距. 解 ...
- C# Func与Action总结
Action:无参数无返回值委托. Action<T>:泛型委托,无返回值,根据输入参数的个数不同有十六个重载. Func< out T>:无输入参数,有返回值. Func&l ...
- TaskFactory单例模式利用xml
/** * * Copyright (c) 1995-2009 Wonders Information Co.,Ltd. * 1518 Lianhang Rd,Shanghai 201112.P.R. ...
- Ubuntu 16.04 以太坊开发环境搭建
今天我们来一步一步从搭建以太坊智能合约开发环境. Ubuntu16.04 安装ubuntu16.04.下载链接 //先update一下(或者换国内源再update) sudo apt-get upda ...