本文整理汇总了C++中CvANN_MLP::clear方法的典型用法代码示例。如果您正苦于以下问题:C++ CvANN_MLP::clear方法的具体用法?C++ CvANN_MLP::clear怎么用?C++ CvANN_MLP::clear使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CvANN_MLP
的用法示例。
在下文中一共展示了CvANN_MLP::clear方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: annTrain
void annTrain(Mat TrainData, Mat classes, int nNeruns)
{
ann.clear();
Mat layers(1, 3, CV_32SC1);
layers.at<int>(0) = TrainData.cols;
layers.at<int>(1) = nNeruns;
layers.at<int>(2) = numAll;
ann.create(layers, CvANN_MLP::SIGMOID_SYM, 1, 1);
//Prepare trainClases
//Create a mat with n trained data by m classes
Mat trainClasses;
trainClasses.create( TrainData.rows, numAll, CV_32FC1 );
for( int i = 0; i < trainClasses.rows; i++ )
{
for( int k = 0; k < trainClasses.cols; k++ )
{
//If class of data i is same than a k class
if( k == classes.at<int>(i) )
trainClasses.at<float>(i,k) = 1;
else
trainClasses.at<float>(i,k) = 0;
}
}
Mat weights( 1, TrainData.rows, CV_32FC1, Scalar::all(1) );
//Learn classifier
ann.train( TrainData, trainClasses, weights );
}
示例2: annTrain
void annTrain(Mat TrainData, Mat classes, int nNeruns) {
ann.clear();
Mat layers(1, 3, CV_32SC1);
layers.at<int>(0) = TrainData.cols;
layers.at<int>(1) = nNeruns;
layers.at<int>(2) = numAll;
ann.create(layers, CvANN_MLP::SIGMOID_SYM, 1, 1);
// Prepare trainClases
// Create a mat with n trained data by m classes
Mat trainClasses;
trainClasses.create(TrainData.rows, numAll, CV_32FC1);
for (int i = 0; i < trainClasses.rows; i++) {
for (int k = 0; k < trainClasses.cols; k++) {
// If class of data i is same than a k class
if (k == classes.at<int>(i))
trainClasses.at<float>(i, k) = 1;
else
trainClasses.at<float>(i, k) = 0;
}
}
Mat weights(1, TrainData.rows, CV_32FC1, Scalar::all(1));
// Learn classifier
// ann.train( TrainData, trainClasses, weights );
// Setup the BPNetwork
// 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.;
ann.train(TrainData, trainClasses, Mat(), Mat(), params);
}
示例3: main
int main (int argc, char** argv){
CvANN_MLP* neuron = NULL ;
IplImage *img = cvLoadImage(argv[1], CV_LOAD_IMAGE_COLOR);
CvMat *input3Ch = cvCreateMat(img->height, img->width, CV_32FC3);
CvMat *output1Ch = cvCreateMat(img->height, img->width, CV_32FC1);
CvMat *input_morph = cvCreateMat(img->height, img->width, CV_32FC1);
//cvConvertScale(img, output1Ch);
cvConvertScale(img, input3Ch);
if (neuron == NULL )
neuron = new CvANN_MLP();
else
neuron->clear();
ByteArrayToANN("cia.tmp", neuron);
CvMat input_nn = cvMat(input3Ch->height*input3Ch->width, 3, CV_32FC1, input3Ch->data.fl);
CvMat output_nn = cvMat(output1Ch->height*output1Ch->width, 1, CV_32FC1, output1Ch->data.fl);
neuron->predict(&input_nn, &output_nn);
//do threshold
cvThreshold(output1Ch, input_morph, -0.5, 255.0, CV_THRESH_BINARY);
// morph open
IplConvKernel *se1 = cvCreateStructuringElementEx(3, 3, 1, 1, CV_SHAPE_ELLIPSE);
cvMorphologyEx(input_morph, input_morph, NULL, se1, CV_MOP_OPEN); // remove noise
CvMat *out_single = cvCreateMat(input_morph->height, input_morph->width, CV_32FC1);
cvSetZero(out_single);
IplImage *tmp8UC1 = cvCreateImage(cvGetSize(input_morph), IPL_DEPTH_8U, 1);
// remove small cells and fill holes.
CvMemStorage *storage = cvCreateMemStorage();
CvSeq *first_con = NULL;
CvSeq *cur = NULL;
cvConvert(input_morph, tmp8UC1);
cvFindContours(tmp8UC1, storage, &first_con, sizeof(CvContour), CV_RETR_EXTERNAL);
cur = first_con;
while (cur != NULL) {
double area = fabs(cvContourArea(cur));
int npts = cur->total;
CvPoint *p = new CvPoint[npts];
cvCvtSeqToArray(cur, p);
//~ cout<<area<<" ";
if (area < 1500.0) // remove small area
cvFillPoly(input_morph, &p, &npts, 1, cvScalar(0.0)); // remove from input
else if (area < 7500.0) {
cvFillPoly(out_single, &p, &npts, 1, cvScalar(255.0)); // move to single
cvFillPoly(input_morph, &p, &npts, 1, cvScalar(0.0)); // remove from input
}else
cvFillPoly(input_morph, &p, &npts, 1, cvScalar(255.0)); // fill hole
delete[] p;
cur = cur->h_next;
}
//~ cout<<endl;
//~ Mat tmpmat = cvarrToMat(out_single, true);
//~ tmpmat.convertTo(tmpmat, CV_8UC1);
//~ if(!imwrite("c_out_single.jpg", tmpmat))
//~ {
//~ cout<<"error writing image"<<endl;
//~ }
//~
//~ tmpmat = cvarrToMat(input_morph, true);
//~ tmpmat.convertTo(tmpmat, CV_8UC1);
//~ if(!imwrite("c_input_morph.jpg", tmpmat))
//~ {
//~ cout<<"error writing image"<<endl;
//~ }
//~
//~ cvSaveImage("c_tmp8UC1.jpg", tmp8UC1);
CvMat *output_morph = cvCreateMat(input_morph->height, input_morph->width, CV_32FC1);
cvOr(input_morph, out_single, output_morph);
cvReleaseStructuringElement(&se1);
//~ tmpmat = cvarrToMat(output_morph, true);
//~ tmpmat.convertTo(tmpmat, CV_8UC1);
//~ if(!imwrite("c_output_morph_or.jpg", tmpmat))
//~ {
//~ cout<<"error writing image"<<endl;
//~ }
//## Scanning Cells ##//
int ncell = 0, prev_ncontour = 0, same_count = 0, ncontour = 1;
while(ncontour != 0){
cvConvert(input_morph, tmp8UC1);
cvClearMemStorage(storage);
int ncontour = cvFindContours(tmp8UC1, storage, &first_con, sizeof(CvContour), CV_RETR_EXTERNAL);
if (ncontour == 0)
break; // finish extract cell
if (ncontour == prev_ncontour) {
cvErode(input_morph, input_morph);
//.........这里部分代码省略.........
示例4: ns__trainANN
int ns__trainANN(struct soap *soap,
char *inputMatFilename,
char *neuralFile,
char **OutputMatFilename)
{
double start, end;
start = omp_get_wtime();
Mat src; //must be 3ch image
if(!readMat(inputMatFilename, src))
{
cerr << "trainANN :: can not read bin file" << endl;
soap->fault->faultstring = "trainANN :: can not read bin file";
return SOAP_FAULT;
}
// convert src to CvMat to use an old-school function
CvMat tmp = src;
CV_Assert(tmp.cols == src.cols && tmp.rows == src.rows &&
tmp.data.ptr == (uchar*)src.data && tmp.step == src.step);
CvMat *input3Ch = cvCreateMat(src.rows, src.cols, CV_32FC3);
cvConvert(&tmp, input3Ch);
CvMat *output1Ch = cvCreateMat(src.rows, src.cols, CV_32FC1);
CvANN_MLP* neuron = NULL ;
if (neuron == NULL )
neuron = new CvANN_MLP();
else
neuron->clear();
if(!ByteArrayToANN(neuralFile, neuron)){
cerr << "trainANN :: can not load byte array to neural" << endl;
return soap_receiver_fault(soap, "trainANN :: can not load byte array to neural", NULL);
}
CvMat input_nn = cvMat(input3Ch->height*input3Ch->width, 3, CV_32FC1, input3Ch->data.fl);
CvMat output_nn = cvMat(output1Ch->height*output1Ch->width, 1, CV_32FC1, output1Ch->data.fl);
neuron->predict(&input_nn, &output_nn);
Mat resultNN = cvarrToMat(output1Ch, false);
/* generate output file name */
*OutputMatFilename = (char*)soap_malloc(soap, FILENAME_SIZE);
time_t now = time(0);
strftime(*OutputMatFilename, sizeof(OutputMatFilename)*FILENAME_SIZE, "/home/lluu/dir/%Y%m%d_%H%M%S_trainANN", localtime(&now));
/* save to bin */
if(!saveMat(*OutputMatFilename, resultNN))
{
cerr << "trainANN :: save mat to binary file" << endl;
return soap_receiver_fault(soap, "trainANN :: save mat to binary file", NULL);
}
src.release();
resultNN.release();
cvReleaseMat(&output1Ch);
end = omp_get_wtime();
cerr<<"ns__trainANN "<<"time elapsed "<<end-start<<endl;
return SOAP_OK;
}