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 //! 用于从车牌的image生成svm的训练特征features
typedef void(*svmCallback)(const cv::Mat& image, cv::Mat& features); typedef void(*svmCallback)(const cv::Mat& image, cv::Mat& features);
//! EasyPR的getFeatures回调函数
//! 本函数是生成直方图均衡特征的回调函数
void getHisteqFeatures(const cv::Mat& image, cv::Mat& features);
//! EasyPR的getFeatures回调函数 //! EasyPR的getFeatures回调函数
//! 本函数是获取垂直和水平的直方图图值 //! 本函数是获取垂直和水平的直方图图值
void getHistogramFeatures(const cv::Mat& image, cv::Mat& features); void getHistogramFeatures(const cv::Mat& image, cv::Mat& features);

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

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

@ -16,34 +16,16 @@ namespace easypr {
svm_ = ml::SVM::load<ml::SVM>(kDefaultSvmPath); 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判断 //! 对单幅图像进行SVM判断
int PlateJudge::plateJudge(const Mat& inMat, int& result) { int PlateJudge::plateJudge(const Mat& inMat, int& result) {
Mat features; Mat features;
getHistogramFeatures(inMat, features); getHistogramFeatures(inMat, features);
//通过直方图均衡化后的彩色图进行预测 //通过直方图均衡化后的彩色图进行预测
Mat p = features.reshape(1, 1); /*Mat p = features.reshape(1, 1);
p.convertTo(p, CV_32FC1); p.convertTo(p, CV_32F);*/
float response = svm_->predict(p); float response = svm_->predict(features);
result = (int)response; result = (int)response;
return 0; return 0;

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

Loading…
Cancel
Save