Reworked the GapToLeader metrics
This commit is contained in:
+17
-2
@@ -46,6 +46,18 @@ namespace Test_Merge
|
|||||||
Bitmap outputBitmap = (Bitmap)InputBitmap.Clone();
|
Bitmap outputBitmap = (Bitmap)InputBitmap.Clone();
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
|
case WindowType.Gap:
|
||||||
|
outputBitmap.Save(Window.GAPTOLEADER_DEBUG_FOLDER + @"\raw_" + id + ".png");
|
||||||
|
|
||||||
|
outputBitmap = Tresholding(outputBitmap, 165);
|
||||||
|
outputBitmap.Save(Window.GAPTOLEADER_DEBUG_FOLDER + @"\treshold_" + id + ".png");
|
||||||
|
|
||||||
|
outputBitmap = Resize(outputBitmap, 2);
|
||||||
|
outputBitmap.Save(Window.GAPTOLEADER_DEBUG_FOLDER + @"\resize_" + id + ".png");
|
||||||
|
|
||||||
|
outputBitmap = Dilatation(outputBitmap, 1);
|
||||||
|
outputBitmap.Save(Window.GAPTOLEADER_DEBUG_FOLDER + @"\Final_dilatation_" + id + ".png");
|
||||||
|
break;
|
||||||
case WindowType.Sector:
|
case WindowType.Sector:
|
||||||
outputBitmap.Save(Window.SECTOR1_DEBUG_FOLDER + @"\raw_" + id + ".png");
|
outputBitmap.Save(Window.SECTOR1_DEBUG_FOLDER + @"\raw_" + id + ".png");
|
||||||
|
|
||||||
@@ -71,13 +83,16 @@ namespace Test_Merge
|
|||||||
outputBitmap.Save(Window.STRING_DEBUG_FOLDER + @"\Final_treshold_" + id + ".png");
|
outputBitmap.Save(Window.STRING_DEBUG_FOLDER + @"\Final_treshold_" + id + ".png");
|
||||||
break;
|
break;
|
||||||
case WindowType.Tyre:
|
case WindowType.Tyre:
|
||||||
|
outputBitmap.Save(Window.TYRE_DEBUG_FOLDER + @"\raw_" + id + ".png");
|
||||||
|
|
||||||
outputBitmap = RemoveUseless(outputBitmap);
|
outputBitmap = RemoveUseless(outputBitmap);
|
||||||
outputBitmap = Resize(outputBitmap, 4);
|
outputBitmap.Save(Window.TYRE_DEBUG_FOLDER + @"\uselessRemoved_" + id + ".png");
|
||||||
|
|
||||||
outputBitmap = Dilatation(outputBitmap, 1);
|
outputBitmap = Dilatation(outputBitmap, 1);
|
||||||
|
outputBitmap.Save(Window.TYRE_DEBUG_FOLDER + @"\Final_dilatation_" + id + ".png");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
outputBitmap = Tresholding(outputBitmap, 165);
|
outputBitmap = Tresholding(outputBitmap, 165);
|
||||||
//outputBitmap = Resize(outputBitmap, 4);
|
|
||||||
outputBitmap = Resize(outputBitmap, 2);
|
outputBitmap = Resize(outputBitmap, 2);
|
||||||
outputBitmap = Erode(outputBitmap, 1);
|
outputBitmap = Erode(outputBitmap, 1);
|
||||||
break;
|
break;
|
||||||
|
|||||||
+131
-21
@@ -124,7 +124,7 @@ namespace Test_Merge
|
|||||||
int result = 0;
|
int result = 0;
|
||||||
|
|
||||||
//Debug
|
//Debug
|
||||||
int salt = rnd.Next(0,999999);
|
int salt = rnd.Next(0, 999999);
|
||||||
|
|
||||||
switch (windowType)
|
switch (windowType)
|
||||||
{
|
{
|
||||||
@@ -146,7 +146,7 @@ namespace Test_Merge
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Bitmap enhancedImage = new OcrImage(image).Enhance(salt,windowType);
|
Bitmap enhancedImage = new OcrImage(image).Enhance(salt, windowType);
|
||||||
|
|
||||||
var tessImage = Pix.LoadFromMemory(ImageToByte(enhancedImage));
|
var tessImage = Pix.LoadFromMemory(ImageToByte(enhancedImage));
|
||||||
|
|
||||||
@@ -194,8 +194,8 @@ namespace Test_Merge
|
|||||||
//The perect case
|
//The perect case
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
seconds = Convert.ToInt32(rawNumbers[0]);
|
seconds = Convert.ToInt32(rawNumbers[0].ToString());
|
||||||
miliseconds = Convert.ToInt32(rawNumbers[1]);
|
miliseconds = Convert.ToInt32(rawNumbers[1].ToString());
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
@@ -204,7 +204,7 @@ namespace Test_Merge
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(rawNumbers.Count == 1)
|
if (rawNumbers.Count == 1)
|
||||||
{
|
{
|
||||||
//Here it is a little harder... Usually its because a '.' has been overlooked or interpreted as a number
|
//Here it is a little harder... Usually its because a '.' has been overlooked or interpreted as a number
|
||||||
|
|
||||||
@@ -260,9 +260,9 @@ namespace Test_Merge
|
|||||||
//The normal way
|
//The normal way
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
minuts = Convert.ToInt32(rawNumbers[0]);
|
minuts = Convert.ToInt32(rawNumbers[0].ToString());
|
||||||
seconds = Convert.ToInt32(rawNumbers[1]);
|
seconds = Convert.ToInt32(rawNumbers[1].ToString());
|
||||||
miliseconds = Convert.ToInt32(rawNumbers[2]);
|
miliseconds = Convert.ToInt32(rawNumbers[2].ToString());
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
@@ -290,7 +290,7 @@ namespace Test_Merge
|
|||||||
{
|
{
|
||||||
Console.WriteLine("Lap time convertion failed");
|
Console.WriteLine("Lap time convertion failed");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -321,7 +321,7 @@ namespace Test_Merge
|
|||||||
if (rawNumbers[1].Length == 5)
|
if (rawNumbers[1].Length == 5)
|
||||||
{
|
{
|
||||||
//It has been forgotten
|
//It has been forgotten
|
||||||
minuts = Convert.ToInt32(rawNumbers[0]);
|
minuts = Convert.ToInt32(rawNumbers[0].ToString());
|
||||||
seconds = Convert.ToInt32(rawNumbers[1][0].ToString() + rawNumbers[1][1].ToString());
|
seconds = Convert.ToInt32(rawNumbers[1][0].ToString() + rawNumbers[1][1].ToString());
|
||||||
miliseconds = Convert.ToInt32(rawNumbers[1][2].ToString() + rawNumbers[1][3].ToString() + rawNumbers[1][4].ToString());
|
miliseconds = Convert.ToInt32(rawNumbers[1][2].ToString() + rawNumbers[1][3].ToString() + rawNumbers[1][4].ToString());
|
||||||
}
|
}
|
||||||
@@ -343,7 +343,7 @@ namespace Test_Merge
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(rawNumbers.Count == 1)
|
if (rawNumbers.Count == 1)
|
||||||
{
|
{
|
||||||
//Both the '.' and the ':' have been missinterpreted
|
//Both the '.' and the ':' have been missinterpreted
|
||||||
if (rawNumbers[0].Length == 6)
|
if (rawNumbers[0].Length == 6)
|
||||||
@@ -362,7 +362,7 @@ namespace Test_Merge
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(rawNumbers[0].Length == 7)
|
if (rawNumbers[0].Length == 7)
|
||||||
{
|
{
|
||||||
//The '.' or ':' have been interpreted as a number (usually the ':')
|
//The '.' or ':' have been interpreted as a number (usually the ':')
|
||||||
try
|
try
|
||||||
@@ -408,23 +408,133 @@ namespace Test_Merge
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(minuts > 9)
|
|
||||||
{
|
|
||||||
Console.Write("Euuuuuh chelou la non?");
|
|
||||||
}
|
|
||||||
|
|
||||||
result = 0;
|
result = 0;
|
||||||
result += minuts * 60 * 1000;
|
result += minuts * 60 * 1000;
|
||||||
result += seconds * 1000;
|
result += seconds * 1000;
|
||||||
result += miliseconds;
|
result += miliseconds;
|
||||||
break;
|
break;
|
||||||
case OcrImage.WindowType.Gap:
|
case OcrImage.WindowType.Gap:
|
||||||
|
if (rawNumbers.Count == 2)
|
||||||
|
{
|
||||||
|
// This should be the x.xxx or a missed x:xx.xxx
|
||||||
|
if (rawNumbers[0].Length > 2)
|
||||||
|
{
|
||||||
|
//Its a missed x:xx.xxx
|
||||||
|
if (rawNumbers[0].Length == 3)
|
||||||
|
{
|
||||||
|
//It forgot the ":"
|
||||||
|
try
|
||||||
|
{
|
||||||
|
minuts = Convert.ToInt32(rawNumbers[0][0].ToString());
|
||||||
|
seconds = Convert.ToInt32(rawNumbers[0][1].ToString() + rawNumbers[0][2].ToString());
|
||||||
|
miliseconds = Convert.ToInt32(rawNumbers[1]);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
Console.WriteLine("Gap to leader convertion failed");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//The ":" has been mistaken as a number
|
||||||
|
if (rawNumbers[0].Length == 4)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
minuts = Convert.ToInt32(rawNumbers[0][0].ToString());
|
||||||
|
seconds = Convert.ToInt32(rawNumbers[0][2].ToString() + rawNumbers[0][3].ToString());
|
||||||
|
miliseconds = Convert.ToInt32(rawNumbers[1]);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
Console.WriteLine("Gap to leader convertion failed");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Console.WriteLine("Gap to leader convertion failed");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//It should be a normal x.xxx or xx.xxx
|
||||||
|
try
|
||||||
|
{
|
||||||
|
seconds = Convert.ToInt32(rawNumbers[0].ToString());
|
||||||
|
miliseconds = Convert.ToInt32(rawNumbers[1].ToString());
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
Console.WriteLine("Gap to leader convertion failed");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (rawNumbers.Count == 1)
|
||||||
|
{
|
||||||
|
//can be anything depending on the size of the string
|
||||||
|
if (rawNumbers[0].Length == 4)
|
||||||
|
{
|
||||||
|
//We just missed the '.'
|
||||||
|
try
|
||||||
|
{
|
||||||
|
seconds = Convert.ToInt32(rawNumbers[0][0].ToString());
|
||||||
|
miliseconds = Convert.ToInt32(rawNumbers[0][1].ToString() + rawNumbers[0][2].ToString() + rawNumbers[0][3].ToString());
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
Console.WriteLine("Gap to leader convertion failed");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (rawNumbers[0].Length == 5)
|
||||||
|
{
|
||||||
|
//We just missed the '.'
|
||||||
|
try
|
||||||
|
{
|
||||||
|
seconds = Convert.ToInt32(rawNumbers[0][0].ToString() + rawNumbers[0][1].ToString());
|
||||||
|
miliseconds = Convert.ToInt32(rawNumbers[0][2].ToString() + rawNumbers[0][3].ToString() + rawNumbers[0][4].ToString());
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
Console.WriteLine("Gap to leader convertion failed");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//There is just too much possibilities that it would be stupid to try and tell them appart so for now im leaving that as just an error
|
||||||
|
Console.WriteLine("Gap to leader convertion failed");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (rawNumbers.Count == 3)
|
||||||
|
{
|
||||||
|
// This should be the x:xx.xxx
|
||||||
|
try
|
||||||
|
{
|
||||||
|
minuts = Convert.ToInt32(rawNumbers[0].ToString());
|
||||||
|
seconds = Convert.ToInt32(rawNumbers[1].ToString());
|
||||||
|
miliseconds = Convert.ToInt32(rawNumbers[2].ToString());
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
Console.WriteLine("Gap to leader convertion failed");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
result = 0;
|
||||||
|
result += minuts * 60 * 1000;
|
||||||
|
result += seconds * 1000;
|
||||||
|
result += miliseconds;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
result = Convert.ToInt32(rawNumbers[0]);
|
result = Convert.ToInt32(rawNumbers[0].ToString());
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
@@ -432,7 +542,7 @@ namespace Test_Merge
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
page.Dispose();
|
page.Dispose();
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -454,7 +564,7 @@ namespace Test_Merge
|
|||||||
Engine.SetVariable("tessedit_char_whitelist", allowedChars);
|
Engine.SetVariable("tessedit_char_whitelist", allowedChars);
|
||||||
|
|
||||||
Bitmap rawData = image;
|
Bitmap rawData = image;
|
||||||
Bitmap enhancedImage = new OcrImage(rawData).Enhance(salt,windowType);
|
Bitmap enhancedImage = new OcrImage(rawData).Enhance(salt, windowType);
|
||||||
|
|
||||||
Page page = Engine.Process(enhancedImage);
|
Page page = Engine.Process(enhancedImage);
|
||||||
using (var iter = page.GetIterator())
|
using (var iter = page.GetIterator())
|
||||||
|
|||||||
+2
-8
@@ -94,16 +94,13 @@ namespace Test_Merge
|
|||||||
{
|
{
|
||||||
// A switch would be prettier but I dont think its supported in this C# version
|
// A switch would be prettier but I dont think its supported in this C# version
|
||||||
if (w is DriverNameWindow)
|
if (w is DriverNameWindow)
|
||||||
//result.Name = (string)await (w as DriverNameWindow).DecodePng(driverList);
|
result.Name = (string)await (w as DriverNameWindow).DecodePng(driverList);
|
||||||
result.Name = "Unknown";
|
|
||||||
if (w is DriverDrsWindow)
|
if (w is DriverDrsWindow)
|
||||||
result.DRS = (bool)await (w as DriverDrsWindow).DecodePng();
|
result.DRS = (bool)await (w as DriverDrsWindow).DecodePng();
|
||||||
if (w is DriverGapToLeaderWindow)
|
if (w is DriverGapToLeaderWindow)
|
||||||
//result.GapToLeader = (int)await (w as DriverGapToLeaderWindow).DecodePng();
|
result.GapToLeader = (int)await (w as DriverGapToLeaderWindow).DecodePng();
|
||||||
result.GapToLeader = 0;
|
|
||||||
if (w is DriverLapTimeWindow)
|
if (w is DriverLapTimeWindow)
|
||||||
result.LapTime = (int)await (w as DriverLapTimeWindow).DecodePng();
|
result.LapTime = (int)await (w as DriverLapTimeWindow).DecodePng();
|
||||||
//result.LapTime = 0;
|
|
||||||
if (w is DriverPositionWindow)
|
if (w is DriverPositionWindow)
|
||||||
result.Position = (int)await (w as DriverPositionWindow).DecodePng();
|
result.Position = (int)await (w as DriverPositionWindow).DecodePng();
|
||||||
if (w is DriverSectorWindow)
|
if (w is DriverSectorWindow)
|
||||||
@@ -111,13 +108,10 @@ namespace Test_Merge
|
|||||||
sectorCount++;
|
sectorCount++;
|
||||||
if (sectorCount == 1)
|
if (sectorCount == 1)
|
||||||
result.Sector1 = (int)await (w as DriverSectorWindow).DecodePng();
|
result.Sector1 = (int)await (w as DriverSectorWindow).DecodePng();
|
||||||
//result.Sector1 = 0;
|
|
||||||
if (sectorCount == 2)
|
if (sectorCount == 2)
|
||||||
result.Sector2 = (int)await (w as DriverSectorWindow).DecodePng();
|
result.Sector2 = (int)await (w as DriverSectorWindow).DecodePng();
|
||||||
//result.Sector2 = 0;
|
|
||||||
if (sectorCount == 3)
|
if (sectorCount == 3)
|
||||||
result.Sector3 = (int)await (w as DriverSectorWindow).DecodePng();
|
result.Sector3 = (int)await (w as DriverSectorWindow).DecodePng();
|
||||||
//result.Sector3 = 0;
|
|
||||||
}
|
}
|
||||||
if (w is DriverTyresWindow)
|
if (w is DriverTyresWindow)
|
||||||
//result.CurrentTyre = (Tyre)await (w as DriverTyresWindow).DecodePng();
|
//result.CurrentTyre = (Tyre)await (w as DriverTyresWindow).DecodePng();
|
||||||
|
|||||||
Reference in New Issue
Block a user