From c4d35e4e8d0a1610450113141da106c491eee1dd Mon Sep 17 00:00:00 2001 From: Matt Hill Date: Thu, 24 Sep 2015 00:22:23 -0400 Subject: [PATCH] Resolves issue #150 Automatically apply pattern matching for countries with only one pattern --- src/openalpr/alpr_impl.cpp | 8 +++++++- src/openalpr/postprocess/postprocess.cpp | 8 ++++++++ src/openalpr/postprocess/postprocess.h | 2 ++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/openalpr/alpr_impl.cpp b/src/openalpr/alpr_impl.cpp index a0ef23f..943b058 100644 --- a/src/openalpr/alpr_impl.cpp +++ b/src/openalpr/alpr_impl.cpp @@ -277,7 +277,13 @@ namespace alpr if (!pipeline_data.disqualified) { AlprPlateResult plateResult; - plateResult.region = defaultRegion; + + // If there's only one pattern for a country, use it. Otherwise use the default + if (country_recognizers.ocr->postProcessor.getPatterns().size() == 1) + plateResult.region = country_recognizers.ocr->postProcessor.getPatterns()[0]; + else + plateResult.region = defaultRegion; + plateResult.regionConfidence = 0; plateResult.plate_index = platecount++; diff --git a/src/openalpr/postprocess/postprocess.cpp b/src/openalpr/postprocess/postprocess.cpp index 3d7bc5b..6580d1d 100644 --- a/src/openalpr/postprocess/postprocess.cpp +++ b/src/openalpr/postprocess/postprocess.cpp @@ -386,6 +386,14 @@ namespace alpr return true; } + std::vector PostProcess::getPatterns() { + vector v; + for(map >::iterator it = rules.begin(); it != rules.end(); ++it) { + v.push_back(it->first); + } + + return v; + } bool letterCompare( const Letter &left, const Letter &right ) { diff --git a/src/openalpr/postprocess/postprocess.h b/src/openalpr/postprocess/postprocess.h index 5eddc08..055dace 100644 --- a/src/openalpr/postprocess/postprocess.h +++ b/src/openalpr/postprocess/postprocess.h @@ -74,6 +74,8 @@ namespace alpr bool regionIsValid(std::string templateregion); + std::vector getPatterns(); + private: Config* config;