OpenCV--支持向量机使用(一)

本文简要介绍了支持向量机(SVM)的基本原理及其在机器学习中的应用,包括关键概念如支持向量和核函数的理解。同时,文中还介绍了如何在OpenCV中使用SVM进行实际操作,涉及必要的环境配置和所需工具。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

1.原理及基础理论(以最直白的方法简述)


支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本、非线性及高维模式识别中表现出

许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题。 对于SVM,有几个重要的概念和基础理论,在使用它之前,一定要弄清楚: 支持向量:用线性可分的情况来加以说明就是那些把可分区域区分开来的点向量,不仅仅这么简单,这些点向量分布在可分区域的边缘, 把所有的样本区分开来。同时,不同区域的这些点向量之间的距离,几何间隔决定了区分误差。几何间隔越大,误差越小,精度越高。训练的 目的即是获得这些点向量,它们使得不同样本区域的几何间隔最大化。这些样本点,即是我们真正需要的样本点,叫做支持(撑)向量。

核函数:“可分?还是不可分?——支持向量机。”当处理非线性、高维问题时,简单的线性分类的方法已经无法满足要求。核函数,即是

用来使样本线性可分的变化函数。它使得样本空间向高维空间映射,趋向于线性可分。

举个简单的例子,一个二维空间中的一条直线,只有一段连续部分属于A类,其余属于B,那么一条简单的直线无法做到分别它们,但是如果

给出一条抛物线,问题就解决了。

使用支持向量机来解决问题过程,以本人通俗的大闹,通俗的这么理解:首先,对你的目标提取合适的具有较高可分度的参数;其次,对目

标提取这些参数,构成一个涵盖所有目标各个类别的合适大小的样本空间;再次,选择合适的核函数,训练,获得支持向量;最后,用这些获得

的支持向量预测,做你想做的事情。至于效果,暂且不论。

 

2.可直接体验的支持向量机(libsvm)


libsvm是台湾的林智仁教授开发的一套支持向量机库。最新的版本已经到达libsvm3.0,大家可以百度“libsvm”。相信大多数人已经有

了这个函数库,再次不再多叙述。如果是第一次使用,记得搜索它的使用方法。优快云里就有很多牛人写过这方面的东西,包括源程序的构架

分析及注释等。

这里只是想讨论下OpenCV里的支持向量机,下面开始正题咯,啰嗦了这么久。

 

3.OpenCV--SVM(傻瓜操作)


首先,据广大的机器视觉爱好者的介绍,OpenCV机器视觉库里头的SVM,其实现方法来源于libsvm。libsvm库里头有可以直接使用的放缩、训练、预测、参数优选等工具(很强大,本文的后续文章将会讲到,使用它来帮助你优选参数等)。但是,libsvm源程序实现方法还是用了C++,本人愚钝,只会C语言,没有冲动和欲望来研究这段代码。为了使用C语言在OpenCV里头调用函数,就可以使用支持向量机,于是就有了大家眼前的这篇文章...

配置环境及准备工作:

  • OpenCV2.0及以上版本;
  • 在开发环境CodeBlocks/VC/VC++ visual studio中配置好链接路径和搜索路径(具体方法:http://www.opencv.org.cn/index.php/Template:Install 来源于OpenCV 中文论坛);
  • libsvm库;
  • 与libsvm相关的需要下载python,和gnuplot(绘图工具,优选参数用到);

 

准备好这些之后,可以先让你的OpenCV程序跑起来,确保配置正确。下面一节将叙述一段网上流传的OpenCV-svm代码(C语言)。

 

 

 

 

 

 

 

 

 

 

 


评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值