diff --git a/src/openalpr/ocr.cpp b/src/openalpr/ocr.cpp index 2409944..c589b70 100644 --- a/src/openalpr/ocr.cpp +++ b/src/openalpr/ocr.cpp @@ -29,15 +29,14 @@ namespace alpr OCR::OCR(Config* config) : postProcessor(config) { - const string EXPECTED_TESSERACT_VERSION = "3.03"; + const string MINIMUM_TESSERACT_VERSION = "3.03"; this->config = config; - - - if (startsWith(tesseract.Version(), EXPECTED_TESSERACT_VERSION) == false) + + if (cmpVersion(tesseract.Version(), MINIMUM_TESSERACT_VERSION.c_str()) < 0) { std::cerr << "Warning: You are running an unsupported version of Tesseract." << endl; - std::cerr << "Expecting version " << EXPECTED_TESSERACT_VERSION << ", your version is: " << tesseract.Version() << endl; + std::cerr << "Expecting at least " << MINIMUM_TESSERACT_VERSION << ", your version is: " << tesseract.Version() << endl; } // Tesseract requires the prefix directory to be set as an env variable diff --git a/src/openalpr/ocr.h b/src/openalpr/ocr.h index 24b3a76..a69ca33 100644 --- a/src/openalpr/ocr.h +++ b/src/openalpr/ocr.h @@ -31,6 +31,7 @@ #include "constants.h" #include "opencv2/imgproc/imgproc.hpp" #include "support/filesystem.h" +#include "support/version.h" #include "tesseract/baseapi.h" diff --git a/src/openalpr/support/CMakeLists.txt b/src/openalpr/support/CMakeLists.txt index f2db822..54b0a36 100644 --- a/src/openalpr/support/CMakeLists.txt +++ b/src/openalpr/support/CMakeLists.txt @@ -6,6 +6,7 @@ set(support_source_files tinythread.cpp platform.cpp utf8.cpp + version.cpp ) set(regex_source_files diff --git a/src/openalpr/support/version.cpp b/src/openalpr/support/version.cpp new file mode 100644 index 0000000..b82a557 --- /dev/null +++ b/src/openalpr/support/version.cpp @@ -0,0 +1,30 @@ +#include "version.h" + + +#include +#include +#include +int cmpVersion(const char *v1, const char *v2) +{ + int i; + int oct_v1[4], oct_v2[4]; + + for (int i = 0; i < 4; i++) + { + oct_v1[i] = 0; + oct_v2[i] = 0; + } + + sscanf(v1, "%d.%d.%d.%d", &oct_v1[0], &oct_v1[1], &oct_v1[2], &oct_v1[3]); + sscanf(v2, "%d.%d.%d.%d", &oct_v2[0], &oct_v2[1], &oct_v2[2], &oct_v2[3]); + + + for (i = 0; i < 4; i++) { + if (oct_v1[i] > oct_v2[i]) + return 1; + else if (oct_v1[i] < oct_v2[i]) + return -1; + } + + return 0; +} \ No newline at end of file diff --git a/src/openalpr/support/version.h b/src/openalpr/support/version.h new file mode 100644 index 0000000..94b56dd --- /dev/null +++ b/src/openalpr/support/version.h @@ -0,0 +1,17 @@ +#ifndef OPENALPR_VERSION_H +#define OPENALPR_VERSION_H + +#include +#include + +/* + * return 1 if v1 > v2 + * return 0 if v1 = v2 + * return -1 if v1 < v2 + */ + +int cmpVersion(const char *v1, const char *v2); + + +#endif /* OPENALPR_VERSION_H */ +