OpenCV机器学习SVM支持向量机的分类程序_第1页
OpenCV机器学习SVM支持向量机的分类程序_第2页
OpenCV机器学习SVM支持向量机的分类程序_第3页
OpenCV机器学习SVM支持向量机的分类程序_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1./利用 SVMS 决2维空间向量的 3 级分类问题2.3.#includestdafx.h4.5.#includecv.h6.#includehighgui.h7.8.#include9.#include10.11. #include12.13. #include14. usingnamespacestd;15.16. intmain(intargc,char*argv)17. 18. intsize=400;/19. constints=100;20. inti,j,sv_num;21. IplImage*img;22. CvSVMsvm=CvSVM();/23. CvSVMParams

2、param;24. CvTermCriteriacriteria;/25. CvRNGrng=cvRNG(time(NULL);26. CvPointptss;/27. floatdatas*2;/28. intress;/29. CvMatdata_mat,res_mat;30. CvScalarrcolor;31. constfloat*support;32. /(1)图像区域的确保和初始化33. img=cvCreateImage(cvSize(size,size),IPL_DEPTH_8U,3);34. cvZero(img);35. /确保画像区域,并清 0(用黑色作初始化处理)。3

3、6.37. /(2)学习数据的生成38. for(i=0;i50*cos(ptsi.x*CV_PI/100)+200)42. cvLine(img,cvPoint(ptsi.x-2,ptsi.y-2),cvPoint(ptsi.x+2,ptsi.y+2),CV_RGB(255,0,0);图像的长度和宽度/试验点个数(可更改!)停止迭代的标准定义 1000 个点点的坐标点的所属类43. cvLine(img,cvPoint(ptsi.x+2,ptsi.y-2),cvPoint(ptsi.x-2,ptsi.y+2),CV_RGB(255,0,0);44. resi=1;45. 46. else47

4、. if(ptsi.x200)48. cvLine(img,cvPoint(ptsi.x-2,ptsi.y-2),cvPoint(ptsi.x+2,ptsi.y+2),CV_RGB(0,255,0);49. cvLine(img,cvPoint(ptsi.x+2,ptsi.y-2),cvPoint(ptsi.x-2,ptsi.y+2),CV_RGB(0,255,0);50. resi=2;51. 52. else53. cvLine(img,cvPoint(ptsi.x-2,ptsi.y-2),cvPoint(ptsi.x+2,ptsi.y+2),CV_RGB(0,0,255);54. cvL

5、ine(img,cvPoint(ptsi.x+2,ptsi.y-2),cvPoint(ptsi.x-2,ptsi.y+2),CV_RGB(0,0,255);55. resi=3;56. 57. 58. 59. 生成 2 维随机训练数据,并将其值放在 CvPoint 数据类型的数组 pts60.61. /(3)学习数据的显示62. cvNamedWindow(SVM,CV_WINDOW_AUTOSIZE);63. cvShowImage(SVM,img);64. cvWaitKey(0);65.66. /(4)学习参数的生成67. for(i=0;is;i+)68. datai*2=float(

6、ptsi.x)/size;69. datai*2+1=float(ptsi.y)/size;70. 71. cvInitMatHeader(&data_mat,s,2,CV_32FC1,data);72. cvInitMatHeader(&res_mat,s,1,CV_32SC1,res);73. criteria=cvTermCriteria(CV_TERMCRIT_EPS,1000,FLT_EPSILON);74. param=CvSVMParams(CvSVM:C_SVC,CvSVM:RBF,10.0,8.0,1.0,10.0,0.5,0.1,NULL,criteria)

7、;75./*76.SVM种类:CvSVM:C_SVC77.Kernel的种类:CvSVM:RBF78.degree:10.0(此次不使用)79.gamma:8.080.coef0:1.0(此次不使用)81.C:10.082.nu:0.5(此次不使用)83.p:0.1(此次不使用)84.然后对训练数据正规化处理,并放在 CvMat 型的数组里。85.*/86.87.88./(5)SVM 学习89.svm.train(&data_mat,&res_mat,NULL,NULL,param);/90./利用训练数据和确定的学习参数,进彳 fSVM 学习91./(7)训练数据的再绘制fo

8、r(i=0;is;i+)CvScalarrcolor;switch(resi)case 1:rcolor=CV_RGB(255,0,0);break;92./(6)学习结果的绘图93.for(i=0;isize;i+)94.for(j=0;jsize;j+)95.CvMatm;96.floatret=0.0;97.floata=float(j)/size,float(i)/size;98.cvInitMatHeader(&m,1,2,CV_32FC1,a);99.ret=svm.predict(&m);100.switch(int)ret)101.case1:102.rcolo

9、r=CV_RGB(100,0,0);103.break;104.case2:105.rcolor=CV_RGB(0,100,0);106.break;107.case3:108.rcolor=CV_RGB(0,0,100);109.break;110.111.cvSet2D(img,i,j,rcolor);112.113.114./为了显示学习结果,通过输入图像区域的所有像素(特征向量)并进行分类。素用所属等级的颜色绘图然后对输入像115.116.117.118.119.120.121.122.123.case 2:rcolor=CV_RGB(0,255,0);125.break;126.ca

10、se3:127.rcolor=CV_RGB(0,0,255);128.break;129.130.cvLine(img,cvPoint(ptsi.x-2,ptsi.y-2),cvPoint(ptsi.x+2,ptsi.y+2),rcolor);131.cvLine(img,cvPoint(ptsi.x+2,ptsi.y-2),cvPoint(ptsi.x-2,ptsi.y+2),rcolor);132.133./将训练数据在结果图像上重复的绘制出来。134.135./(8)支持向量的绘制136.sv_num=svm.get_support_vector_count();137.for(i=0;isv_num;i+)138.support=svm.get_support_vector(i);139.cvCircle(img,cvPoint(int)(support0*size),(size),5,CV_RGB(200,200,200);140.141./用白色的圆圈对支持向量作标记。142.143./(9)图像的显示144.cvNamedWindow(SVM,CV_WINDOW_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论