第一个 支持向量机(Support Vector Machine) CvSVM
利用
SVM
解决
2
维空间向量的
3
级分类问题
#include <cv.h>
#include <highgui.h>
#include <ml.h>
#include <time.h>
int main(int argc, char **argv)
{
int size= 400; //图像的长度和宽度
int s= 1000;
int i, j, sv_num;
IplImage *img;
CvSVM svm= CvSVM ();
CvSVMParams param;
CvTermCriteria criteria; //停止迭代的标准
CvRNG rng= cvRNG(time(NULL));
CvPoint pts[s]; //定义1000个点
float data[s* 2];
int res[s];
CvMat data_mat, res_mat;
CvScalar rcolor;
const float *support;
// (1)
图像区域的确保和初始化
img= cvCreateImage(cvSize(size, size), IPL_DEPTH_8U, 3);
cvZero(img);
// (1)
图像区域的确保和初始化
确保画像区域,并清0(用黑色作初始化处理)。
// (2)
学习数据的生成
for (i= 0; i< s; i++) {
pts[i].x= cvRandInt(&rng) % size; //用随机整数赋值
pts[i].y= cvRandInt(&rng) % size;
if (pts[i].y> 50 * cos(pts[i].x* CV_PI/ 100) + 200) {
cvLine(img, cvPoint(pts[i].x- 2, pts[i].y- 2), cvPoint(pts[i].x+ 2, pts[i].y+ 2), CV_RGB(255, 0,
0));
cvLine(img, cvPoint(pts[i].x+ 2, pts[i].y- 2), cvPoint(pts[i].x- 2, pts[i].y+ 2), CV_RGB(255, 0,
0));
res[i] = 1;
}
评论4