欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

    OpenCV机器学习SVM支持向量机的分类程序.docx

    • 资源ID:3061883       资源大小:38.54KB        全文页数:6页
    • 资源格式: DOCX        下载积分:6.99金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要6.99金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    OpenCV机器学习SVM支持向量机的分类程序.docx

    OpenCV机器学习SVM支持向量机的分类程序1. /利用SVM解决2维空间向量的3级分类问题 2. 3. #include "stdafx.h" 4. 5. #include "cv.h" 6. #include "highgui.h" 7. 8. #include <ML.H> 9. #include <TIME.H> 10. 11. #include <CTYPE.H> 12. 13. #include <IOSTREAM> 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< s; i+) 39. ptsi.x= cvRandInt(&rng) % size; /用随机整数赋值 40. ptsi.y= cvRandInt(&rng) % size; 41. if (ptsi.y> 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(&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); 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(&data_mat, &res_mat, NULL, NULL, param);/ 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(&m, 1, 2, CV_32FC1, a); 99. ret= svm.predict(&m); 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. cvNamedWindow("SVM", CV_WINDOW_AUTOSIZE); 145. cvShowImage("SVM", img); 146. cvWaitKey(0); 147. cvDestroyWindow("SVM"); 148. cvReleaseImage(&img); 149. return 0; 150. /显示实际处理结果的图像,直到某个键被按下为止。 151.

    注意事项

    本文(OpenCV机器学习SVM支持向量机的分类程序.docx)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开