opencv高階之路:神經網路識別車牌字元寫過有關用神經網路識別車牌字元的文章,但無奈只給出了樣本,沒有具體的**,在這裡補足這個遺憾。
opencv環境配置請參考
以下是**:
#include "mrdir.h"
const char*mlpmodel="ann.xml";
//中國車牌
const char strcharacters = ;
void calcgradientfeat(const mat& imgsrc, vector& feat)
, , };
mat y_mask = mat(3, 3, cv_32f, mask) / 8;
mat x_mask = y_mask.t(); // 轉置
mat sobelx, sobely;
filter2d(image, sobelx, cv_32f, x_mask);
filter2d(image, sobely, cv_32f, y_mask);
sobelx = abs(sobelx);
sobely = abs(sobely);
float totlevaluex = summatvalue(sobelx);
float totlevaluey = summatvalue(sobely);
// 將影象劃分為4*2共8個格仔,計算每個格仔裡灰度值總和的百分比
for (int i = 0; i < image.rows; i = i + 4)
} }
float summatvalue(const mat& image)
for (int i = 0; i < r; i++)
} return sumvalue;
}void getfilefromdir(const char *directorypath,vector&vfiles)
while (bresult)
}void readsample(const char *directorypath,mat &samples,mat &labels)
}cout<<"good,reading characters finished!"layersizes.push_back(train.cols); // input layer
layersizes.push_back(train.cols+trainlabel.cols);// hidden layer has neurons
layersizes.push_back(trainlabel.cols); // output layer
// activate function
int activatefunc = cvann_mlp::sigmoid_sym;
double alpha = 1;
double beta = 1;
// create the network
neuralnetworks.create(cv::mat(layersizes), activatefunc, alpha, beta);
// training params
cvann_mlp_trainparams trainparams;
trainparams.train_method = cvann_mlp_trainparams::backprop;
trainparams.bp_dw_scale = 0.0001;
trainparams.bp_moment_scale = 0;
// iteration number
cvtermcriteria termcrlt;
termcrlt.type = cv_termcrit_iter | cv_termcrit_eps;
termcrlt.epsilon = 0.0001f;
termcrlt.max_iter = 1000;
trainparams.term_crit = termcrlt;
// training the networks
cout<<"starting mlp training"<(total);
point maxloc;
minmaxloc(nearest, null, null, null, &maxloc);
char ret=maxloc.x;
//char label=testlabel.at(total,0);
char label=0;
for(int i=0;i<34;i++)
}if(ret==label)
right++;
else
error++;
total++;
}cout<<"precision"<
Python keras神經網路識別mnist
上次用matlab寫過乙個識別mnist的神經網路,位址在 這次又用keras做了乙個差不多的,畢竟,現在最流行的專案都是python做的,我也跟一下潮流 資料是從本地解析好的影象和標籤載入的。神經網路有兩個隱含層,都有512個節點。import numpy as np from keras.pre...
Python keras神經網路識別mnist
上次用matlab寫過乙個識別mnist的神經網路,位址在 這次又用keras做了乙個差不多的,畢竟,現在最流行的專案都是python做的,我也跟一下潮流 資料是從本地解析好的影象和標籤載入的。神經網路有兩個隱含層,都有512個節點。import numpy as np from keras.pre...
Python keras神經網路識別mnist
上次用matlab寫過乙個識別mnist的神經網路,位址在 這次又用keras做了乙個差不多的,畢竟,現在最流行的專案都是python做的,我也跟一下潮流 資料是從本地解析好的影象和標籤載入的。神經網路有兩個隱含層,都有512個節點。import numpy as np from keras.pre...