# Conflicts:
#	src/core/plate_recognize.cpp
v1.6alpha
Micooz 9 years ago
commit 9fc21b47f7

2
.gitignore vendored

@ -9,7 +9,6 @@ resources/image/tmp/
*.ilk
*.lib
*.pdb
demo
experi
/tmp
@ -27,7 +26,6 @@ Thumbs.db
*.tlb
*.tlh
*.bak
[Bb]in
[Dd]ebug*/
*.sbr
obj/

@ -1,55 +1,70 @@
cmake_minimum_required(VERSION 2.8)
project (easypr)
project(easypr)
# c++11 required
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if(COMPILER_SUPPORTS_CXX11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
elseif(COMPILER_SUPPORTS_CXX0X)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
else()
message(STATUS "The compiler ${CMAKE_CXX_COMPILER} doesnt support C++11. Please upgrade or use a different C++ compiler.")
endif()
if (COMPILER_SUPPORTS_CXX11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
elseif (COMPILER_SUPPORTS_CXX0X)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
else ()
message(STATUS "The compiler ${CMAKE_CXX_COMPILER} doesnt support C++11. Please upgrade or use a different C++ compiler.")
endif ()
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "/usr/local/opt/opencv3")
# opencv3 package required
if (CMAKE_SYSTEM_NAME MATCHES "Darwin")
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "/usr/local/opt/opencv3")
endif ()
# OpenVC3 required
find_package(OpenCV 3.1.0 REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
# easypr library
# where to find header files
include_directories(.)
include_directories(include)
include_directories(${OpenCV_INCLUDE_DIRS})
# sub directories
add_subdirectory(thirdparty)
# sources to be compiled
set(SOURCE_FILES
src/core/core_func.cpp
src/core/chars_identify.cpp
src/core/chars_recognise.cpp
src/core/chars_segment.cpp
src/core/feature.cpp
src/core/plate_detect.cpp
src/core/plate_judge.cpp
src/core/plate_locate.cpp
src/core/plate_recognize.cpp
src/core/better_mser.cpp
src/train/ann_train.cpp
src/train/svm_train.cpp
src/train/train.cpp
src/preprocess/deface.cpp
src/preprocess/gdts.cpp
src/preprocess/mc_data.cpp
src/util/util.cpp
src/util/program_options.cpp
src/util/kv.cpp
src/third/erfilter.cpp
src/third/helper.cpp
src/third/lbp.cpp
)
src/core/core_func.cpp
src/core/chars_identify.cpp
src/core/chars_recognise.cpp
src/core/chars_segment.cpp
src/core/feature.cpp
src/core/plate_detect.cpp
src/core/plate_judge.cpp
src/core/plate_locate.cpp
src/core/plate_recognize.cpp
src/core/better_mser.cpp
src/train/ann_train.cpp
src/train/svm_train.cpp
src/train/train.cpp
src/preprocess/deface.cpp
src/preprocess/gdts.cpp
src/preprocess/mc_data.cpp
src/util/util.cpp
src/util/program_options.cpp
src/util/kv.cpp
)
# pack objects to static library
add_library(easypr STATIC ${SOURCE_FILES})
# test cases
add_executable(demo test/main.cpp)
if (CMAKE_SYSTEM_NAME MATCHES "Darwin")
set(EXECUTABLE_NAME "demo_darwin_amd64")
elseif (CMAKE_SYSTEM_NAME MATCHES "Linux")
set(EXECUTABLE_NAME "demo_linux_amd64")
endif ()
# link
target_link_libraries(demo ${OpenCV_LIBS} easypr ${OpenCV_LIBS})
set_target_properties(demo PROPERTIES RUNTIME_OUTPUT_DIRECTORY ../)
# test cases
add_executable(${EXECUTABLE_NAME} test/main.cpp)
# link opencv libs
target_link_libraries(${EXECUTABLE_NAME} easypr thirdparty ${OpenCV_LIBS})

Binary file not shown.

Binary file not shown.

@ -1,9 +1,24 @@
#!/usr/bin/env bash
build_tmp="_build/"
__dirname=`dirname $0`
BUILD_TMP_PATH=${__dirname}/_build
mkdir ${build_tmp} 2>/dev/null
cd ${build_tmp}
# cleanup
rm -r bin/* 2>/dev/null
cmake --clean-first ..
make -j 4 --makefile Makefile
# create tmp dir for cmake
mkdir -p ${BUILD_TMP_PATH}
cd ${BUILD_TMP_PATH}
# Generate Makefile
cmake --clean-first -DCMAKE_BUILD_TYPE=Release ..
# Compile
if [ -f 'Makefile' ];then
make --jobs 4
fi
if [ $? -eq 0 ];then
cp demo_*_amd64 ../bin
fi

@ -4,7 +4,7 @@
#include "easypr/core/feature.h"
#include "easypr/core/core_func.h"
#include "third/lbp.hpp"
#include "thirdparty/lbp.hpp"
namespace easypr {

File diff suppressed because it is too large Load Diff

@ -6,10 +6,10 @@
#include <fstream>
#include <list>
#include <memory>
#include <numeric>
#include "xml/xmlParser.h"
#include <numeric>
#include "easypr/core/core_func.h"
#include "easypr/util/util.h"
#include "thirdparty/xmlParser/xmlParser.h"
using namespace std;
@ -89,11 +89,13 @@ namespace easypr {
CPlateRecognize pr;
// 设置Debug模式
// 设置Debug模式
pr.setDebug(false);
pr.setLifemode(true);
// 设置要处理的一张图片中最多有多少车牌
// 设置要处理的一张图片中最多有多少车牌
pr.setMaxPlates(4);
//pr.setDetectType(PR_DETECT_COLOR | PR_DETECT_SOBEL);
pr.setDetectType(PR_DETECT_CMSER);
@ -112,33 +114,33 @@ namespace easypr {
cout << "Begin to test the easypr accuracy!" << endl;
// 总的测试图片数量
// 总的测试图片数量
int count_all = 0;
// 错误的图片数量
// 错误的图片数量
int count_err = 0;
// 未识别的图片数量
// 未识别的图片数量
int count_norecogin = 0;
std::list<std::string> not_recognized_files;
// 总的字符差距
// 总的字符差距
float diff_all = 0;
// 平均字符差距
// 平均字符差距
float diff_avg = 0;
// 完全匹配的识别次数
// 完全匹配的识别次数
float match_count = 0;
// 完全匹配的识别次数所占识别图片中的比例
// 完全匹配的识别次数所占识别图片中的比例
float match_rate = 0;
@ -147,7 +149,7 @@ namespace easypr {
vector<float> icdar2003_recall_all;
vector<float> icdar2003_precise_all;
// 开始和结束时间
// 开始和结束时间
time_t begin, end;
time(&begin);
@ -155,17 +157,17 @@ namespace easypr {
for (int i = 0; i < size; i++) {
string filepath = files[i].c_str();
// EasyPR开始判断车牌
// EasyPR开始判断车牌
Mat src = imread(filepath);
// 如果是非图像文件,直接过去
// 如果是非图像文件,直接过去
if (!src.data) continue;
cout << "------------------" << endl;
// 获取真实的车牌
// 获取真实的车牌
string plateLicense = Utils::getFileName(filepath);
cout << kv->get("original_plate") << ":" << plateLicense << endl;
@ -340,7 +342,7 @@ namespace easypr {
string colorplate = plateVec[j].getPlateStr();
// 计算"蓝牌:苏E7KU22"中冒号后面的车牌大小"
// 计算"蓝牌:苏E7KU22"中冒号后面的车牌大小"
vector<string> spilt_plate = Utils::splitString(colorplate, ':');

@ -0,0 +1,19 @@
cmake_minimum_required(VERSION 2.8)
project(thirdparty)
# OpenVC3 required
find_package(OpenCV 3.1.0 REQUIRED)
# where to find header files
include_directories(${OpenCV_INCLUDE_DIRS})
# sources to be compiled
set(SOURCE_FILES
xmlParser/xmlParser.cpp
erfilter.cpp
helper.cpp
lbp.cpp
)
# pack objects to static library
add_library(thirdparty STATIC ${SOURCE_FILES})

@ -44,7 +44,7 @@
#include <queue>
#include "opencv2/imgproc.hpp"
#include "opencv2/ml.hpp"
#include "third/erfilter.hpp"
#include "erfilter.hpp"
#if defined _MSC_VER && _MSC_VER == 1500
typedef int int_fast32_t;

@ -16,7 +16,7 @@
* See <http://www.opensource.org/licenses/bsd-license>
*/
#include <opencv2/opencv.hpp>
#include "third/helper.hpp"
#include "helper.hpp"
using namespace cv;
@ -107,7 +107,7 @@ histc_(const Mat& src, int minVal=0, int maxVal=255, bool normed=false) {
// Establish the number of bins.
int histSize = maxVal-minVal+1;
// Set the ranges.
float range[] = { minVal, maxVal+1 } ;
float range[] = {static_cast<float>(minVal), static_cast<float>(maxVal + 1)} ;
const float* histRange = { range };
// calc histogram
calcHist(&src, 1, 0, Mat(), result, 1, &histSize, &histRange, true, false);

@ -1,5 +1,5 @@
#include "third/lbp.hpp"
#include "third/helper.hpp"
#include "lbp.hpp"
#include "helper.hpp"
using namespace cv;
Loading…
Cancel
Save