From e422f5bd842606810dd3fa09a3683e3aef27bf40 Mon Sep 17 00:00:00 2001 From: Kevin Lawrence Date: Mon, 4 Jan 2016 12:15:56 -0500 Subject: [PATCH] Updating to OpenALPR 2.2 --- README.md | 6 ++- includes/TRexpp.h | 0 includes/alpr.h | 16 ++++++- includes/alpr_impl.h | 14 ++++-- includes/binarize_wolf.h | 0 includes/cjson.h | 0 includes/colorfilter.h | 0 includes/config.h | 28 ++++++++++-- includes/constants.h | 0 includes/licenseplatecandidate.h | 0 includes/motiondetector.h | 0 includes/ocr.h | 0 includes/pipeline_data.h | 7 ++- includes/prewarp.h | 0 includes/result_aggregator.h | 62 +++++++++++++++++++++++++++ includes/transformation.h | 0 includes/utility.h | 4 ++ release/linux_x64/node_openalpr.node | Bin 52260 -> 46295 bytes 18 files changed, 126 insertions(+), 11 deletions(-) mode change 100644 => 100755 includes/TRexpp.h mode change 100644 => 100755 includes/alpr.h mode change 100644 => 100755 includes/alpr_impl.h mode change 100644 => 100755 includes/binarize_wolf.h mode change 100644 => 100755 includes/cjson.h mode change 100644 => 100755 includes/colorfilter.h mode change 100644 => 100755 includes/config.h mode change 100644 => 100755 includes/constants.h mode change 100644 => 100755 includes/licenseplatecandidate.h mode change 100644 => 100755 includes/motiondetector.h mode change 100644 => 100755 includes/ocr.h mode change 100644 => 100755 includes/pipeline_data.h mode change 100644 => 100755 includes/prewarp.h create mode 100755 includes/result_aggregator.h mode change 100644 => 100755 includes/transformation.h mode change 100644 => 100755 includes/utility.h mode change 100644 => 100755 release/linux_x64/node_openalpr.node diff --git a/README.md b/README.md index ee1d4b5..96f9e31 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,8 @@ var openalpr = require ("node-openalpr"); function identify (id, path) { console.log (openalpr.IdentifyLicense (path, function (error, output) { - console.log (id +" "+ output.processing_time_ms); + var results = output.results; + console.log (id +" "+ output.processing_time_ms +" "+ ((results.length > 0) ? results[0].plate : "No results")); if (id == 349) { console.log (openalpr.Stop ()); @@ -85,6 +86,7 @@ This is a breakdown of all of the methods available for node-openalpr. Start nee 0. [Download and install io.js v3.0.0+](https://iojs.org/en/index.html) 0. [Download and install git](https://git-scm.com/downloads) +0. [Download and install cmake](https://cmake.org/download/) #### Windows @@ -103,4 +105,4 @@ This is a breakdown of all of the methods available for node-openalpr. Start nee All of the code is provided as-is. We will not provide on-going support for any bugs that may be found. Please submit bug and features requests - we will review them but we do not garunteed that they will be addressed. Pull requests are welcome -and we'll review them as quickly as we can. \ No newline at end of file +and we'll review them as quickly as we can. diff --git a/includes/TRexpp.h b/includes/TRexpp.h old mode 100644 new mode 100755 diff --git a/includes/alpr.h b/includes/alpr.h old mode 100644 new mode 100755 index c94ed9b..974999f --- a/includes/alpr.h +++ b/includes/alpr.h @@ -25,6 +25,12 @@ #include #include +#ifdef WIN32 + #define OPENALPR_DLL_EXPORT __declspec( dllexport ) +#else + #define OPENALPR_DLL_EXPORT +#endif + namespace alpr { @@ -78,6 +84,9 @@ namespace alpr // The number requested is always >= the topNPlates count int requested_topn; + // The country (training data code) that was used to recognize the plate + std::string country; + // the best plate is the topNPlate with the highest confidence AlprPlate bestPlate; @@ -101,10 +110,13 @@ namespace alpr class AlprResults { public: - AlprResults() {}; + AlprResults() { + frame_number = -1; + }; virtual ~AlprResults() {}; int64_t epoch_time; + int64_t frame_number; int img_width; int img_height; float total_processing_time_ms; @@ -118,7 +130,7 @@ namespace alpr class Config; class AlprImpl; - class Alpr + class OPENALPR_DLL_EXPORT Alpr { public: diff --git a/includes/alpr_impl.h b/includes/alpr_impl.h old mode 100644 new mode 100755 index 6941fd1..cc22fd4 --- a/includes/alpr_impl.h +++ b/includes/alpr_impl.h @@ -66,6 +66,13 @@ namespace alpr AlprResults results; }; + struct AlprRecognizers + { + Detector* plateDetector; + StateDetector* stateDetector; + OCR* ocr; + }; + class AlprImpl { @@ -83,6 +90,8 @@ namespace alpr void applyRegionTemplate(AlprPlateResult* result, std::string region); + AlprFullDetails analyzeSingleCountry(cv::Mat colorImg, cv::Mat grayImg, std::vector regionsOfInterest); + void setDetectRegion(bool detectRegion); void setTopN(int topn); void setDefaultRegion(std::string region); @@ -99,9 +108,8 @@ namespace alpr private: - Detector* plateDetector; - StateDetector* stateDetector; - OCR* ocr; + std::map recognizers; + PreWarp* prewarp; int topN; diff --git a/includes/binarize_wolf.h b/includes/binarize_wolf.h old mode 100644 new mode 100755 diff --git a/includes/cjson.h b/includes/cjson.h old mode 100644 new mode 100755 diff --git a/includes/colorfilter.h b/includes/colorfilter.h old mode 100644 new mode 100755 diff --git a/includes/config.h b/includes/config.h old mode 100644 new mode 100755 index 3767329..9fcf920 --- a/includes/config.h +++ b/includes/config.h @@ -26,6 +26,7 @@ #include #include +#include #include /* getenv */ #include @@ -40,6 +41,8 @@ namespace alpr virtual ~Config(); bool loaded; + + std::string config_file_path; std::string country; @@ -54,6 +57,9 @@ namespace alpr bool skipDetection; + bool auto_invert; + bool always_invert; + std::string prewarp; int maxPlateAngleDegrees; @@ -66,10 +72,15 @@ namespace alpr float plateWidthMM; float plateHeightMM; - float charHeightMM; - float charWidthMM; + std::vector charHeightMM; + std::vector charWidthMM; + + float avgCharHeightMM; + float avgCharWidthMM; + float charWhitespaceTopMM; float charWhitespaceBotMM; + float charWhitespaceBetweenLinesMM; int templateWidthPx; int templateHeightPx; @@ -88,13 +99,18 @@ namespace alpr float plateLinesSensitivityVertical; float plateLinesSensitivityHorizontal; + float segmentationMinSpeckleHeightPercent; int segmentationMinBoxWidthPx; float segmentationMinCharHeightPercent; float segmentationMaxCharWidthvsAverage; + std::string detectorFile; + std::string ocrLanguage; int ocrMinFontSize; + bool mustMatchPattern; + float postProcessMinConfidence; float postProcessConfidenceSkipLevel; unsigned int postProcessMinCharacters; @@ -127,11 +143,16 @@ namespace alpr std::string runtimeBaseDir; + std::vector loaded_countries; + + bool setCountry(std::string country); + private: float ocrImagePercent; float stateIdImagePercent; + std::vector parse_country_string(std::string countries); void loadCommonValues(std::string configFile); void loadCountryValues(std::string configFile, std::string country); @@ -143,7 +164,8 @@ namespace alpr { DETECTOR_LBP_CPU=0, DETECTOR_LBP_GPU=1, - DETECTOR_MORPH_CPU=2 + DETECTOR_MORPH_CPU=2, + DETECTOR_LBP_OPENCL=3 }; } diff --git a/includes/constants.h b/includes/constants.h old mode 100644 new mode 100755 diff --git a/includes/licenseplatecandidate.h b/includes/licenseplatecandidate.h old mode 100644 new mode 100755 diff --git a/includes/motiondetector.h b/includes/motiondetector.h old mode 100644 new mode 100755 diff --git a/includes/ocr.h b/includes/ocr.h old mode 100644 new mode 100755 diff --git a/includes/pipeline_data.h b/includes/pipeline_data.h old mode 100644 new mode 100755 index 4fca140..bc7846a --- a/includes/pipeline_data.h +++ b/includes/pipeline_data.h @@ -58,7 +58,12 @@ namespace alpr ScoreKeeper confidence_weights; - std::vector charRegions; + // Boxes around characters in cropped image + // Each row in a multiline plate is an entry in the vector + std::vector > charRegions; + + // Same data, just not broken down by line + std::vector charRegionsFlat; diff --git a/includes/prewarp.h b/includes/prewarp.h old mode 100644 new mode 100755 diff --git a/includes/result_aggregator.h b/includes/result_aggregator.h new file mode 100755 index 0000000..837cd1f --- /dev/null +++ b/includes/result_aggregator.h @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2015 OpenALPR Technology, Inc. + * Open source Automated License Plate Recognition [http://www.openalpr.com] + * + * This file is part of OpenALPR. + * + * OpenALPR is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License + * version 3 as published by the Free Software Foundation + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . +*/ + +#ifndef OPENALPR_RESULTAGGREGATOR_H +#define OPENALPR_RESULTAGGREGATOR_H + + +#include "alpr_impl.h" + + +// Runs the analysis for multiple training sets, and aggregates the results into the best matches + +struct PlateShapeInfo +{ + cv::Point2f center; + float area; + int max_width; + int max_height; +}; + +namespace alpr +{ + + class ResultAggregator + { + public: + ResultAggregator(); + + virtual ~ResultAggregator(); + + void addResults(AlprFullDetails full_results); + + AlprFullDetails getAggregateResults(); + + private: + std::vector all_results; + + PlateShapeInfo getShapeInfo(AlprPlateResult plate); + + std::vector > findClusters(); + int overlaps(AlprPlateResult plate, std::vector > clusters); + }; + +} + +#endif //OPENALPR_RESULTAGGREGATOR_H diff --git a/includes/transformation.h b/includes/transformation.h old mode 100644 new mode 100755 diff --git a/includes/utility.h b/includes/utility.h old mode 100644 new mode 100755 index 642fce2..a94a9ac --- a/includes/utility.h +++ b/includes/utility.h @@ -55,6 +55,7 @@ namespace alpr bool isPointBelowLine(cv::Point tp); float getPointAt(float x); + float getXPointAt(float y); cv::Point closestPointOnSegmentTo(cv::Point p); @@ -109,6 +110,9 @@ namespace alpr std::string toString(float value); std::string toString(double value); + std::string <rim(std::string &s); + std::string &rtrim(std::string &s); + std::string &trim(std::string &s); } #endif // OPENALPR_UTILITY_H diff --git a/release/linux_x64/node_openalpr.node b/release/linux_x64/node_openalpr.node old mode 100644 new mode 100755 index ce5c50225c0ba1b63953d29e8a7baa2945d79a3b..5e172c60ee3c14d1d5655c9139576e1e3c301d7b GIT binary patch literal 46295 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

Btxb-#- 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 literal 52260 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

o=rt$_Qs}gu=$9=cLIli2ilZ)0(~}DSsD{ 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 Ay8r+H