Added always/never/auto invert config property to country config

This commit is contained in:
Matt Hill
2015-09-11 20:04:56 -04:00
parent 6a09b13c90
commit 83d6e06e14
8 changed files with 58 additions and 5 deletions

View File

@@ -34,3 +34,8 @@ ocr_language = lau
; Override for postprocess letters/numbers regex. ; Override for postprocess letters/numbers regex.
postprocess_regex_letters = [A-Z] postprocess_regex_letters = [A-Z]
postprocess_regex_numbers = [0-9] postprocess_regex_numbers = [0-9]
; Whether the plate is always dark letters on light background, light letters on dark background, or both
; value can be either always, never, or auto
invert = auto

View File

@@ -35,3 +35,8 @@ ocr_language = lau
; Override for postprocess letters/numbers regex. ; Override for postprocess letters/numbers regex.
postprocess_regex_letters = [A-Z] postprocess_regex_letters = [A-Z]
postprocess_regex_numbers = [0-9] postprocess_regex_numbers = [0-9]
; Whether the plate is always dark letters on light background, light letters on dark background, or both
; value can be either always, never, or auto
invert = auto

View File

@@ -36,3 +36,8 @@ ocr_language = leu
; Override for postprocess letters/numbers regex. ; Override for postprocess letters/numbers regex.
postprocess_regex_letters = [A-Z] postprocess_regex_letters = [A-Z]
postprocess_regex_numbers = [0-9] postprocess_regex_numbers = [0-9]
; Whether the plate is always dark letters on light background, light letters on dark background, or both
; value can be either always, never, or auto
invert = auto

View File

@@ -35,3 +35,7 @@ ocr_language = lkr
; Override for postprocess letters/numbers regex. ; Override for postprocess letters/numbers regex.
postprocess_regex_letters = \pL postprocess_regex_letters = \pL
postprocess_regex_numbers = \pN postprocess_regex_numbers = \pN
; Whether the plate is always dark letters on light background, light letters on dark background, or both
; value can be either always, never, or auto
invert = auto

View File

@@ -34,3 +34,7 @@ ocr_language = lus
; Override for postprocess letters/numbers regex. ; Override for postprocess letters/numbers regex.
postprocess_regex_letters = [A-Z] postprocess_regex_letters = [A-Z]
postprocess_regex_numbers = [0-9] postprocess_regex_numbers = [0-9]
; Whether the plate is always dark letters on light background, light letters on dark background, or both
; value can be either always, never, or auto
invert = auto

View File

@@ -219,6 +219,24 @@ namespace alpr
multiline = getBoolean(ini, "", "multiline", false); multiline = getBoolean(ini, "", "multiline", false);
string invert_val = getString(ini, "", "invert", "auto");
if (invert_val == "always")
{
auto_invert = false;
always_invert = true;
}
else if (invert_val == "never")
{
auto_invert = false;
always_invert = false;
}
else
{
auto_invert = true;
always_invert = false;
}
plateWidthMM = getFloat(ini, "", "plate_width_mm", 100); plateWidthMM = getFloat(ini, "", "plate_width_mm", 100);
plateHeightMM = getFloat(ini, "", "plate_height_mm", 100); plateHeightMM = getFloat(ini, "", "plate_height_mm", 100);

View File

@@ -54,6 +54,9 @@ namespace alpr
bool skipDetection; bool skipDetection;
bool auto_invert;
bool always_invert;
std::string prewarp; std::string prewarp;
int maxPlateAngleDegrees; int maxPlateAngleDegrees;

View File

@@ -51,6 +51,9 @@ namespace alpr
timespec startTime; timespec startTime;
getTimeMonotonic(&startTime); getTimeMonotonic(&startTime);
if (config->always_invert)
bitwise_not(pipeline_data->crop_gray, pipeline_data->crop_gray);
pipeline_data->clearThresholds(); pipeline_data->clearThresholds();
pipeline_data->thresholds = produceThresholds(pipeline_data->crop_gray, config); pipeline_data->thresholds = produceThresholds(pipeline_data->crop_gray, config);
@@ -177,7 +180,13 @@ namespace alpr
} }
if (config->auto_invert)
pipeline_data->plate_inverted = isPlateInverted(); pipeline_data->plate_inverted = isPlateInverted();
else
pipeline_data->plate_inverted = config->always_invert;
if (config->debugGeneral)
cout << "Plate inverted: " << pipeline_data->plate_inverted << endl;
if (pipeline_data->textLines.size() > 0) if (pipeline_data->textLines.size() > 0)