Histeq feature in one function easypr::histeq (core_func.h).

v1.6alpha
Micooz 10 years ago
parent cac3427261
commit 5990d4a2b0

@ -12,10 +12,6 @@ namespace easypr {
//! 用于从车牌的image生成svm的训练特征features
typedef void(*svmCallback)(const cv::Mat& image, cv::Mat& features);
//! EasyPR的getFeatures回调函数
//! 本函数是生成直方图均衡特征的回调函数
void getHisteqFeatures(const cv::Mat& image, cv::Mat& features);
//! EasyPR的getFeatures回调函数
//! 本函数是获取垂直和水平的直方图图值
void getHistogramFeatures(const cv::Mat& image, cv::Mat& features);

@ -20,9 +20,6 @@ class PlateJudge {
//! 车牌判断(一副图像)
int plateJudge(const Mat& inMat, int& result);
//! 直方图均衡
Mat histeq(Mat);
private:
PlateJudge();

@ -38,12 +38,6 @@ namespace easypr {
return out;
}
//! EasyPR的getFeatures回调函数
//! 本函数是生成直方图均衡特征的回调函数
void getHisteqFeatures(const Mat& image, Mat& features) {
features = histeq(image);
}
//! EasyPR的getFeatures回调函数
//! 本函数是获取垂直和水平的直方图图值
void getHistogramFeatures(const Mat& image, Mat& features) {

@ -16,34 +16,16 @@ namespace easypr {
svm_ = ml::SVM::load<ml::SVM>(kDefaultSvmPath);
}
//! Ö±·½Í¼¾ùºâ
Mat PlateJudge::histeq(Mat in) {
Mat out(in.size(), in.type());
if (in.channels() == 3) {
Mat hsv;
std::vector<Mat> hsvSplit;
cvtColor(in, hsv, CV_BGR2HSV);
split(hsv, hsvSplit);
equalizeHist(hsvSplit[2], hsvSplit[2]);
merge(hsvSplit, hsv);
cvtColor(hsv, out, CV_HSV2BGR);
}
else if (in.channels() == 1) {
equalizeHist(in, out);
}
return out;
}
//! 对单幅图像进行SVM判断
int PlateJudge::plateJudge(const Mat& inMat, int& result) {
Mat features;
getHistogramFeatures(inMat, features);
//通过直方图均衡化后的彩色图进行预测
Mat p = features.reshape(1, 1);
p.convertTo(p, CV_32FC1);
/*Mat p = features.reshape(1, 1);
p.convertTo(p, CV_32F);*/
float response = svm_->predict(p);
float response = svm_->predict(features);
result = (int)response;
return 0;

@ -41,10 +41,8 @@ int test_plate_judge() {
cv::Mat src = imread("resources/image/plate_judge.jpg");
//可能是车牌的图块集合
vector<cv::Mat> matVec;
//经过SVM判断后得到的图块集合
vector<cv::Mat> resultVec;
CPlateLocate lo;

Loading…
Cancel
Save