初始化数据

      int width = 512, height = 512;       Mat image = Mat::zeros(height, width, CV_8UC3);  
设置训练数据
    float labels[4] = {1.0, -1.0, -1.0, -1.0};       Mat labelsMat(4, 1, CV_32FC1, labels);          float trainingData[4][2] = { {501, 10}, {255, 10}, {501, 255}, {10, 501} };       Mat trainingDataMat(4, 2, CV_32FC1, trainingData);  
SVM初始化
    CvSVMParams params;       params.svm_type    = CvSVM::C_SVC;       params.kernel_type = CvSVM::LINEAR;       params.term_crit   = cvTermCriteria(CV_TERMCRIT_ITER, 100, 1e-6);  
SVM训练
    CvSVM SVM;       SVM.train(trainingDataMat, labelsMat, Mat(), Mat(), params);  
SVM结果显示
Vec3b green(0,255,0), blue (255,0,0);       for (int i = 0; i < image.rows; ++i)           for (int j = 0; j < image.cols; ++j)           {               Mat sampleMat = (Mat_<float>(1,2) << i,j);               float response = SVM.predict(sampleMat);                  if (response == 1)                   image.at<Vec3b>(j, i)  = green;               else if (response == -1)                    image.at<Vec3b>(j, i)  = blue;           }          // Show the training data        int thickness = -1;       int lineType = 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);