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

下载本文档

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

文档简介

1. /利用 SVM 解决 2 维空间向量的 3 级分类问题 2. 3. #include “stdafx.h“ 4. 5. #include “cv.h“ 6. #include “highgui.h“ 7. 8. #include 9. #include 10. 11. #include 12. 13. #include 14. using namespace std; 15. 16. int main(int argc, char *argv) 17. 18. int size = 400; /图像的长度和宽度 19. const int s = 100; /试验点个数(可更改!) 20. int i, j, sv_num; 21. IplImage *img; 22. CvSVM svm = CvSVM(); / 23. CvSVMParams param; 24. CvTermCriteria criteria;/停止迭代的标准 25. CvRNG rng = cvRNG(time(NULL); 26. CvPoint ptss; /定义 1000 个点 27. float datas*2; /点的坐标 28. int ress; /点的所属类 29. CvMat data_mat, res_mat; 30. CvScalar rcolor; 31. const float *support; 32. / (1)图像区域的确保和初始化 33. img= cvCreateImage(cvSize(size, size), IPL_DEPTH_8U, 3); 34. cvZero(img); 35. /确保画像区域,并清 0(用黑色作初始化处理)。 36. 37. / (2)学习数据的生成 38. for (i= 0; i 50 * 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); 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. else 47. if (ptsi.x 200) 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. else 53. cvLine(img, cvPoint(ptsi.x- 2, ptsi.y- 2), cvPoint(ptsi.x+ 2, ptsi.y+ 2), CV_RGB(0, 0, 255); 54. cvLine(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 数据类型的数组 pts 中。 60. 61. / (3)学习数据的显示 62. cvNamedWindow(“SVM“, CV_WINDOW_AUTOSIZE); 63. cvShowImage(“SVM“, img); 64. cvWaitKey(0); 65. 66. / (4)学习参数的生成 67. for (i= 0; i s; i+) 68. datai* 2 = float (ptsi.x) / size; 69. datai* 2 + 1 = float (ptsi.y) / size; 70. 71. cvInitMatHeader( 72. cvInitMatHeader( 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); 75. /* 76. SVM 种类:CvSVM:C_SVC 77. Kernel 的种类:CvSVM:RBF 78. degree:10.0(此次不使用) 79. gamma:8.0 80. coef0:1.0(此次不使用) 81. C:10.0 82. nu:0.5 (此次不使用) 83. p: 0.1(此次不使用) 84. 然后对训练数据正规化处理,并放在 CvMat 型的数组里。 85. */ 86. 87. 88. /(5)SVM 学习 89. svm.train(/ 90. / 利用训练数据和确定的学习参数,进行 SVM 学习 91. 92. / (6)学习结果的绘图 93. for (i= 0; i size; i+) 94. for (j= 0; j size; j+) 95. CvMat m; 96. float ret = 0.0; 97. float a = float (j) / size, float (i) / size ; 98. cvInitMatHeader( 99. ret= svm.predict( 100. switch (int) ret) 101. case 1: 102. rcolor= CV_RGB(100, 0, 0); 103. break; 104. case 2: 105. rcolor= CV_RGB(0, 100, 0); 106. break; 107. case 3: 108. rcolor= CV_RGB(0, 0, 100); 109. break; 110. 111. cvSet2D(img, i, j, rcolor); 112. 113. 114. /为了显示学习结果,通过输入图像区域的所有像素(特征向量) 并进行分类。然后对输入 像素用所属等级的颜色绘图。 115. 116. / (7)训练数据的再绘制 117. for (i= 0; i s; i+) 118. CvScalar rcolor; 119. switch (resi) 120. case 1: 121. rcolor= CV_RGB(255, 0, 0); 122. break; 123. case 2: 124. rcolor= CV_RGB(0, 255, 0); 125. break; 126. case 3: 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; i sv_num; i+) 138. support = svm.get_support_vector(i); 139. cvCircle(img, cvPoint(int) (support0 * size), (int) (support1 * size), 5, CV_RGB(200, 200, 200); 140. 141. /用白色的圆圈对支持向量作标记。 142. 143. / (9)图像的显示 144. cvNa

温馨提示

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

评论

0/150

提交评论