opencv用SVM進行多類分類

2021-06-14 04:56:32 字數 1476 閱讀 6978

#include "stdafx.h"

#include "cv.h"

#include "highgui.h"

#include "ml.h"

#include #include #include using namespace std;

int main(int argc, char* argv)

else

else

}} // 學習資料的現實

cvnamedwindow("svm",cv_window_autosize);

cvshowimage("svm",img);

cvwaitkey(0);

// 學習引數的生成

for (i=0;icvinitmatheader(&data_mat,s,2,cv_32fc1,data);

cvinitmatheader(&res_mat,s,1,cv_32sc1,res);

criteria = cvtermcriteria(cv_termcrit_eps,1000,flt_epsilon);

param = cvsvmparams(cvsvm::c_svc,cvsvm::rbf,10.0,8.0,1.0,10.0,0.5,0.1,null,criteria);

// svm type:cvsvm::c_svc kernel:cvsvm::rbf degree:10.0 gamma:8.0 coef0:1.0

svm.train(&data_mat,&res_mat,null,null,param);

// 學習結果繪圖

for (i=0;i; cvinitmatheader(&m,1,2,cv_32fc1,a);

ret = svm.predict(&m);

switch((int)ret)

cvset2d(img,i,j,rcolor);

} }// 為了顯示學習結果,通過對輸入影象區域的所有畫素(特徵向量)進行分類,然後對輸入的畫素用所屬顏色等級的顏色繪圖

for(i=0;icvline(img,cvpoint(pts[i].x-2,pts[i].y-2),cvpoint(pts[i].x+2,pts[i].y+2),rcolor);

cvline(img,cvpoint(pts[i].x+2,pts[i].y-2),cvpoint(pts[i].x-2,pts[i].y+2),rcolor);

} // 支援向量的繪製

sv_num = svm.get_support_vector_count();

for (i=0; icvnamedwindow("svm",cv_window_autosize);

cvshowimage("svm",img);

cvwaitkey(0);

cvdestroywindow("svm");

cvreleaseimage(&img);

return 0;

}

svm 多類劃分問題

一般情況下svm有兩種多類劃分的方法,一種是one vs rest另外一種是pairwise。下面是我根據所閱讀的文獻對兩種多類劃分的理解,請大蝦看看是否正確,並且還附帶有問題 1 one vs rest。假如我有四類要劃分 也就是4個label 他們是a b c d。於是我在抽取訓練集的時候,分別...

SVM多類劃分問題

一般情況下svm有兩種多類劃分的方法,一種是one vs rest另外一種是pairwise。1 one vs rest。假如我有四類要劃分 也就是4個label 他們是a b c d。於是我在抽取訓練集的時候,分別抽取a所對應的向量作為正集,b,c,d所對應的向量作為負集 b所對應的向量作為正集,...

svm的多類分類問題

最近在看svm用於說話人識別,需要對訓練語音進行正負類區分,從而訓練合適的分類面。現在把自己看的東西大致總結一下,如果有錯的,或者不明白的,請指出,謝謝!傳統的svm使用與說話人確認,因為svm是乙個二分類,而確認也是乙個二分問題,接受 或 拒絕 將目標說話人作為正類,選取合適的冒認者集合作為負類,...