您的位置:首页 > 理论基础 > 计算机网络

opencv的一个神经网络例程(转自http://blog.sina.com.cn/s/blog_61e10f020101bv94.html)

2016-07-16 16:10 615 查看


opencv的一个神经网络例程(转)

 (2013-07-19 00:45:34)


转载▼

 分类: OPENCV学习笔记
//The example of using BPNetwork in OpenCV

//Coded by L. Wei

#include

#include

#include

#include

#include

using namespace std;

using namespace cv;

int main()

{

 //Setup the BPNetwork

 CvANN_MLP bp;

 // Set up BPNetwork's parameters

 CvANN_MLP_TrainParams params;

 params.train_method=CvANN_MLP_TrainParams::BACKPROP;

 params.bp_dw_scale=0.1;

 params.bp_moment_scale=0.1;

 //params.train_method=CvANN_MLP_TrainParams::RPROP;

 //params.rp_dw0 = 0.1;

 //params.rp_dw_plus = 1.2;

 //params.rp_dw_minus = 0.5;

 //params.rp_dw_min = FLT_EPSILON;

 //params.rp_dw_max = 50.;

 // Set up training data

 float labels[3][5] = {{0,0,0,0,0},{1,1,1,1,1},{0,0,0,0,0}};

 Mat labelsMat(3, 5, CV_32FC1, labels);

 float trainingData[3][5] = { {1,2,3,4,5},{111,112,113,114,115}, {21,22,23,24,25} };

 Mat trainingDataMat(3, 5, CV_32FC1, trainingData);

 Mat layerSizes=(Mat_(1,5) << 5,2,2,2,5);

 bp.create(layerSizes,CvANN_MLP::SIGMOID_SYM);//CvANN_MLP::SIGMOID_SYM

                                            //CvANN_MLP::GAUSSIAN

                                            //CvANN_MLP::IDENTITY

 bp.train(trainingDataMat, labelsMat, Mat(),Mat(), params);

 // Data for visual representation

 int width = 512, height = 512;

 Mat image = Mat::zeros(height, width, CV_8UC3);

 Vec3b green(0,255,0), blue (255,0,0);

 // Show the decision regions given by the SVM

 for (int i = 0; i < image.rows; ++i)

  for (int j = 0; j < image.cols; ++j)

  {

   Mat sampleMat = (Mat_(1,5) << i,j,0,0,0);

   Mat responseMat;

   bp.predict(sampleMat,responseMat);

   float* p=responseMat.ptr(0);

   int response=0;

   for(int i=0;i<5;i++){

   // cout<<p[i]<<" ";

    response+=p[i];

   }

   if (response >2)

    image.at(j, i)  = green;

   else 

    image.at(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);

  imwrite("result.png", image);        // save the image

  imshow("BP Simple Example", image); // show it to the user

  waitKey(0);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: