mirror of
https://github.com/kerberos-io/openalpr-base.git
synced 2025-10-07 04:20:53 +08:00
Merge branch 'vendor-master' into public-master
This commit is contained in:
@@ -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
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
|
@@ -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)
|
||||||
{
|
{
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -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
|
||||||
|
@@ -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"
|
||||||
|
|
||||||
|
@@ -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
|
||||||
|
30
src/openalpr/support/version.cpp
Normal file
30
src/openalpr/support/version.cpp
Normal 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;
|
||||||
|
}
|
17
src/openalpr/support/version.h
Normal file
17
src/openalpr/support/version.h
Normal 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 */
|
||||||
|
|
Reference in New Issue
Block a user