EmguCV中SVM的实现
来源:互联网 发布:博鼎软件科技有限公司 编辑:程序博客网 时间:2024/05/18 14:15
关于SVM的介绍看这里http://blog.csdn.net/qq_22033759/article/details/48348251
最终的运行图如下:
上代码吧;
public partial class Form1 : Form { public Form1() { InitializeComponent(); Image<Bgr, byte> img = new Image<Bgr, byte>(512, 512); SVM svm = new SVM(); svm.SetKernel(SVM.SvmKernelType.Linear); svm.Type = SVM.SvmType.CSvc; svm.TermCriteria = new MCvTermCriteria(1, 1e-6); Image<Gray, float> a = new Image<Gray, float>(2,4); Image<Gray, int> b = new Image<Gray, int>(4, 1); a[0, 0] = new Gray(400); a[0, 1] = new Gray(30); a[1, 0] = new Gray(255); a[1, 1] = new Gray(10); a[2, 0] = new Gray(350); a[2, 1] = new Gray(255); a[3, 0] = new Gray(10); a[3, 1] = new Gray(501); b[0, 0] = new Gray(1); b[0, 1] = new Gray(-1); b[0, 2] = new Gray(1); b[0, 3] = new Gray(-1); TrainData data = new TrainData(a, Emgu.CV.ML.MlEnum.DataLayoutType.RowSample, b); svm.Train(data); byte[] imgd = img.Bytes; for (int i = 0; i < img.Height; i++) { for (int j = 0; j < img.Width; j++) { int k = i * img.Width + j; Image<Gray, float> sample = new Image<Gray, float>(2, 1); sample[0, 0] = new Gray(j); sample[0, 1] = new Gray(i); float res = svm.Predict(sample); if(res==1) { imgd[k * 3] = 0; imgd[k * 3 + 1] = 255; imgd[k * 3 + 2] = 0; } else if(res==-1) { imgd[k * 3] = 255; imgd[k * 3 + 1] = 0; imgd[k * 3 + 2] = 0; } } } img.Bytes = imgd; CvInvoke.Circle(img, new Point(400, 30), 2, new MCvScalar(0, 100, 0), 2); CvInvoke.Circle(img, new Point(255, 10), 2, new MCvScalar(100, 0, 0), 2); CvInvoke.Circle(img, new Point(350, 255), 2, new MCvScalar(0, 100, 0), 2); CvInvoke.Circle(img, new Point(10, 501), 2, new MCvScalar(100, 0, 0), 2); imageBox1.Image = img; } }
0 0
- EmguCV中SVM的实现
- 【Emgucv】emgucv实现自动对比度
- C#中使用Emgucv实现对多波段Img文件的滤波操作
- 继续坑自己,EmguCV之SVM.Train
- svm 的R实现
- SVM的python实现
- SVM python3的实现
- EmguCV中BGR与HSV之间的转换
- EmguCV 中检测棋盘格角点的方法 FindChessboardCorners
- python中svm方法实现
- SVM中SMO算法的实现理论+代码
- CNN中使用SVM进行分类(keras的实现)
- emguCV实现仿射变换
- 基于opencv的SVM实现
- Matlab实现svm的分类
- 继续坑自己,EmguCV之SVM.Train(二)
- 在Unity3D中使用EmguCV
- OpenCV中SVM的使用
- 黑马程序员-----数据库
- HDUOJ A+B 题目1000
- Linux下安装Nginx操作详解
- Android开发之路(一)---如何开始学习Android
- 字符串匹配的KMP算法
- EmguCV中SVM的实现
- 【Android自定义View】随机数按钮
- nagios高可用性设置
- Msdelta Type
- CURL常用命令
- leetcode:TwoSum
- Java构造和解析Json数据的两种方法详解(02)
- iterator_traits 存在的作用与意义
- Python 爬虫 urllib2异常处理