OpenCV機器學習SVM支持向量機的分類程序_第1頁
OpenCV機器學習SVM支持向量機的分類程序_第2頁
OpenCV機器學習SVM支持向量機的分類程序_第3頁
OpenCV機器學習SVM支持向量機的分類程序_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1./利用SVMi昆決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 s

2、ize = 400;/圖像的長度和寬度19.const int s = 100;/試驗點個數(shù)(可更改! !)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

3、;30.CvScalar rcolor;31.const float *support;32./ (1)圖像區(qū)域的確保和初始化33.img= cvCreateImage(cvSize(size, size), IPL_DEPTH_8U, 3);34.cvZero(img);35./確保畫像區(qū)域,并清0(用黑色作初始化處理)。36.37./ (2) 學習數(shù)據(jù)的生成38.for (i= 0; i< s; i+) 39.ptsi.x= cvRandInt(&rng) % size;/ 用隨機整數(shù)賦值40.ptsi.y= cvRandInt(&rng) % size;41.if

4、(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, cvP

5、oint(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(

6、img, cvPoint(ptsi.x+ 2, ptsi.y- 2), cvPoint(ptsi.x- 2, ptsi.y+ 2), CV_RGB(0, 0, 255);55.resi = 3;9./生成2維隨機訓練數(shù)據(jù),并將其值放在CvPoint數(shù)據(jù)類型的數(shù)組pts 中。60.61./ (3) 學習數(shù)據(jù)的顯示62.cvNamedWindow( "SVM”, CV_WINDOW_AUTOSIZE);63.cvShowImage( "SVM”, img);64.cvWaitKey(0);65.66./ (4) 學習參數(shù)的生成67.for (i= 0; i&

7、lt; 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, Cv

8、SVM:RBF, 10.0, 8.0, 1.0, 10.0, 0.5,0.1, NULL, criteria);75./*76.SVM種類:CvSVM:C_SVC77.Kernel的種類:CvSVM:RBF78.degree: 10.0 (此次不使用)79.gamma: 8.080.coef0: 1.0 (此次不使用)00020

9、.121.122.123.C: 10.0nu : 0.5 (此次不使用)p: 0.1 (此次不使用)然后對訓練數(shù)據(jù)正規(guī)化處理,并放在CvMat型的數(shù)組里*/ (5)SVM 學習svm.train(&data_mat, &res_mat, NULL, NULL, param);/ / 利用訓練數(shù)據(jù)和確定的學習參數(shù),進行SVM學習/ (6)學習結果的繪圖for (i= 0; i< size; i+) for (j= 0; j< size; j+) CvMat m;float ret = 0.0;float a = float (j) / size, float (i)

10、/ size ;cvInitMatHeader(&m, 1,2, CV_32FC1, a);ret= svm.predict(&m);switch ( int ) ret) case 1:rcolor= CV_RGB(100, 0, 0);break ;case 2:rcolor= CV_RGB(0, 100, 0);break ;case 3:rcolor= CV_RGB(0, 0, 100);break ;cvSet2D(img, i, j, rcolor);/為了顯示學習結果,通過輸入圖像區(qū)域的所有像素(特征向量)并進行分類。然后對輸入像素用所屬等級的顏色繪圖。/ (7)

11、 訓練數(shù)據(jù)的再繪制for (i= 0; i< s; i+) CvScalar rcolor;switch (resi) case 1:rcolor= CV_RGB(255, 0, 0);break ;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);13

12、1. cvLine(img, cvPoint(ptsi.x+ 2, ptsi.y- 2), cvPoint(ptsi.x- 2, ptsi.y+ 2), rcolor);132. 133. /將訓練數(shù)據(jù)在結果圖像上重復的繪制出來。134.134. / (8) 支持向量的繪制135. sv_num= svm.get_support_vector_count();136. for (i= 0; i< sv_num; i+) 137. support = svm.get_support_vector(i);int ) (support1 *138. cvCircle(img, cvPoint(int ) (support0 * size),(size), 5, CV_RGB(200, 200, 200);139. 140. /用白色的圓圈對支持向量作標記。142.141. / (9) 圖像的顯示142. cvNamedWindow( "SVM",

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論