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

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);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
详细说明:几个神经网络算法的例程,包括前向adaline, 共振art1, boltzman机, hopfield 网络, 自组织som 等等. 文件列表: Neural Networks at your Fingertips ..................................\ADALINE ..................................\.......\ADALINE.C ..................................\.......\ADALINE.EDT ..................................\.......\ADALINE.MAK ..................................\.......\ADALINE.MDP ..................................\.......\ADALINE.TXT ..................................\.......\RELEASE ..................................\ART1 ..................................\....\ART1.C ..................................\....\ART1.EDT ..................................\....\ART1.MAK ..................................\....\ART1.MDP ..................................\....\ART1.TXT ..................................\....\RELEASE ..................................\BAM ..................................\...\BAM.C ..................................\...\BAM.EDT ..................................\...\BAM.MAK ..................................\...\BAM.MDP ..................................\...\BAM.TXT ..................................\...\RELEASE ..................................\BOLTZMAN ..................................\........\BOLTZMAN.C ..................................\........\BOLTZMAN.EDT ..................................\........\BOLTZMAN.MAK ..................................\........\BOLTZMAN.MDP ..................................\........\BOLTZMAN.TXT ..................................\........\RELEASE ..................................\BPN ..................................\...\BPN.C ..................................\...\BPN.EDT ..................................\...\BPN.MAK ..................................\...\BPN.MDP ..................................\...\BPN.TXT ..................................\...\RELEASE ..................................\CPN ..................................\...\CPN.C ..................................\...\CPN.EDT ..................................\...\CPN.MAK ..................................\...\CPN.MDP ..................................\...\CPN.TXT ..................................\...\RELEASE ..................................\HOPFIELD ..................................\........\HOPFIELD.C ..................................\........\HOPFIELD.EDT ..................................\........\HOPFIELD.MAK ..................................\........\HOPFIELD.MDP ..................................\........\HOPFIELD.TXT ..................................\........\RELEASE ..................................\Neural Networks at your Fingertips.doc ..................................\SOM ..................................\...\RELEASE ..................................\...\SOM.C ..................................\...\SOM.EDT ..................................\...\SOM.MAK ..................................\...\SOM.MDP ..................................\...\SOM.TXT
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值