关于opencv中SVM的问题

[复制链接]
查看11 | 回复0 | 2021-1-27 06:27:16 | 显示全部楼层 |阅读模式
在学习SVM的时候,在网上找了两个程序
第一个程序:
#include
#include
#include
usingnamespacecv;
intmain()
{
//Dataforvisualrepresentation
intwidth=512,height=512;
Matimage=Mat::zeros(height,width,CV_8UC3);
//Setuptrainingdata
floatlabels[4]={1.0,-1.0,-1.0,-1.0};
MatlabelsMat(4,1,CV_32FC1,labels);
floattrainingData[4][2]={{501,10},{255,10},{501,255},{10,501}};
MattrainingDataMat(4,2,CV_32FC1,trainingData);
//SetupSVM'sparameters
CvSVMParamsparams;
params.svm_type=CvSVM::C_SVC;
params.kernel_type=CvSVM::LINEAR;
params.term_crit=cvTermCriteria(CV_TERMCRIT_ITER,100,1e-6);
//TraintheSVM
CvSVMSVM;
SVM.train(trainingDataMat,labelsMat,Mat(),Mat(),params);
Vec3bgreen(0,255,0),blue(255,0,0);
//ShowthedecisionregionsgivenbytheSVM
for(inti=0;i(1,2)(i,j)=green;
elseif(response==-1)
image.at(i,j)=blue;
}
//Showthetrainingdata
intthickness=-1;
intlineType=8;
circle(image,Point(501,10),5,Scalar(0,0,0),thickness,lineType);
circle(image,Point(255,10),5,Scalar(255,255,255),thickness,lineType);
circle(image,Point(501,255),5,Scalar(255,255,255),thickness,lineType);
circle(image,Point(10,501),5,Scalar(255,255,255),thickness,lineType);
//Showsupportvectors
thickness=2;
lineType=8;
intc=SVM.get_support_vector_count();
for(inti=0;i
#include
#include
#include"time.h"
usingnamespacestd;
usingnamespacecv;
intmain()
{
constints=1000;
intsize=512;
inti,j,sv_num;
IplImage*img;
CvSVMsvm;
CvSVMParamsparam;
CvTermCriteriacriteria;
CvRNGrng=cvRNG(time(NULL));
CvPointpts;
floatdata[s*2];
intres;
CvMatdata_mat,res_mat;
CvScalarrcolor;
constfloat*support;
//(1)画像領域の確保と初期化
img=cvCreateImage(cvSize(size,size),IPL_DEPTH_8U,3);
cvZero(img);
//(2)学習データの生成
for(i=0;i50*cos(pts.x*CV_PI/100)+200){
cvLine(img,cvPoint(pts.x-2,pts.y-2),cvPoint(pts.x+2,pts.y+2),CV_RGB(255,0,0));
cvLine(img,cvPoint(pts.x+2,pts.y-2),cvPoint(pts.x-2,pts.y+2),CV_RGB(255,0,0));
res=1;
}
else{
if(pts.x>200){
cvLine(img,cvPoint(pts.x-2,pts.y-2),cvPoint(pts.x+2,pts.y+2),CV_RGB(0,255,0));
cvLine(img,cvPoint(pts.x+2,pts.y-2),cvPoint(pts.x-2,pts.y+2),CV_RGB(0,255,0));
res=2;
}
else{
cvLine(img,cvPoint(pts.x-2,pts.y-2),cvPoint(pts.x+2,pts.y+2),CV_RGB(0,0,255));
cvLine(img,cvPoint(pts.x+2,pts.y-2),cvPoint(pts.x-2,pts.y+2),CV_RGB(0,0,255));
res=3;
}
}
}
//(3)学習データの表示
cvNamedWindow("SVM",CV_WINDOW_AUTOSIZE);
cvShowImage("SVM",img);
cvWaitKey(0);
//(4)学習パラメータの生成
for(i=0;i -->
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行