Merge branch 'vendor-master' into public-master

This commit is contained in:
Peter Rekdal Sunde
2015-07-13 18:15:44 +02:00
8 changed files with 89 additions and 17 deletions

View File

@@ -105,6 +105,11 @@ Install OpenALPR on Ubuntu 14.04 x64 with the following commands:
sudo apt-get update sudo apt-get update
sudo apt-get install openalpr openalpr-daemon openalpr-utils libopenalpr-dev sudo apt-get install openalpr openalpr-daemon openalpr-utils libopenalpr-dev
Integrating the Library
-----------------------
OpenALPR is written in C++ and has bindings in C#, Python, and Java. Please see this guide for examples showing how to run OpenALPR in your application: https://github.com/openalpr/openalpr/wiki/Integrating-OpenALPR
Compiling Compiling
----------- -----------

View File

@@ -29,6 +29,10 @@ namespace alpr
{ {
AlprImpl::AlprImpl(const std::string country, const std::string configFile, const std::string runtimeDir) AlprImpl::AlprImpl(const std::string country, const std::string configFile, const std::string runtimeDir)
{ {
timespec startTime;
getTimeMonotonic(&startTime);
config = new Config(country, configFile, runtimeDir); config = new Config(country, configFile, runtimeDir);
plateDetector = ALPR_NULL_PTR; plateDetector = ALPR_NULL_PTR;
@@ -51,7 +55,12 @@ namespace alpr
setDefaultRegion(""); setDefaultRegion("");
prewarp = new PreWarp(config); prewarp = new PreWarp(config);
timespec endTime;
getTimeMonotonic(&endTime);
if (config->debugTiming)
cout << "OpenALPR Initialization Time: " << diffclock(startTime, endTime) << "ms." << endl;
} }
AlprImpl::~AlprImpl() AlprImpl::~AlprImpl()
{ {
@@ -559,12 +568,22 @@ namespace alpr
void AlprImpl::setDetectRegion(bool detectRegion) void AlprImpl::setDetectRegion(bool detectRegion)
{ {
this->detectRegion = detectRegion; this->detectRegion = detectRegion;
if (detectRegion && this->stateIdentifier == NULL) if (detectRegion && this->stateIdentifier == NULL)
{ {
timespec startTime;
getTimeMonotonic(&startTime);
this->stateIdentifier = new StateIdentifier(this->config); this->stateIdentifier = new StateIdentifier(this->config);
timespec endTime;
getTimeMonotonic(&endTime);
if (config->debugTiming)
cout << "State Identification Initialization Time: " << diffclock(startTime, endTime) << "ms." << endl;
} }
} }
void AlprImpl::setTopN(int topn) void AlprImpl::setTopN(int topn)
{ {

View File

@@ -253,17 +253,17 @@ namespace alpr
void Config::setDebug(bool value) void Config::setDebug(bool value)
{ {
debugGeneral = !value; debugGeneral = value;
debugTiming = !value; debugTiming = value;
debugStateId = !value; debugStateId = value;
debugPlateLines = !value; debugPlateLines = value;
debugPlateCorners = !value; debugPlateCorners = value;
debugCharSegmenter = !value; debugCharSegmenter = value;
debugCharAnalysis = !value; debugCharAnalysis = value;
debugColorFiler = !value; debugColorFiler = value;
debugOcr = !value; debugOcr = value;
debugPostProcess = !value; debugPostProcess = value;
debugPauseOnFrame = !value; debugPauseOnFrame = value;
} }

View File

@@ -29,15 +29,14 @@ namespace alpr
OCR::OCR(Config* config) OCR::OCR(Config* config)
: postProcessor(config) : postProcessor(config)
{ {
const string EXPECTED_TESSERACT_VERSION = "3.03"; const string MINIMUM_TESSERACT_VERSION = "3.03";
this->config = config; this->config = config;
if (cmpVersion(tesseract.Version(), MINIMUM_TESSERACT_VERSION.c_str()) < 0)
if (startsWith(tesseract.Version(), EXPECTED_TESSERACT_VERSION) == false)
{ {
std::cerr << "Warning: You are running an unsupported version of Tesseract." << endl; 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 // Tesseract requires the prefix directory to be set as an env variable

View File

@@ -31,6 +31,7 @@
#include "constants.h" #include "constants.h"
#include "opencv2/imgproc/imgproc.hpp" #include "opencv2/imgproc/imgproc.hpp"
#include "support/filesystem.h" #include "support/filesystem.h"
#include "support/version.h"
#include "tesseract/baseapi.h" #include "tesseract/baseapi.h"

View File

@@ -6,6 +6,7 @@ set(support_source_files
tinythread.cpp tinythread.cpp
platform.cpp platform.cpp
utf8.cpp utf8.cpp
version.cpp
) )
set(regex_source_files set(regex_source_files

View File

@@ -0,0 +1,30 @@
#include "version.h"
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
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;
}

View File

@@ -0,0 +1,17 @@
#ifndef OPENALPR_VERSION_H
#define OPENALPR_VERSION_H
#include <stdio.h>
#include <string.h>
/*
* 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 */