Finally all work (Except for tyres and DRS)

This commit is contained in:
2023-04-06 08:53:31 +02:00
parent 9af92f06b0
commit 308ef06a6d
8 changed files with 65 additions and 20 deletions
+1 -1
View File
@@ -15,7 +15,7 @@ namespace OCR_Decode
}
public override object DecodePng()
{
int result = GetTimeFromPng(WindowImage);
int result = GetTimeFromPng(WindowImage, OcrImage.WindowType.Gap);
return result;
}
}
+1 -1
View File
@@ -16,7 +16,7 @@ namespace OCR_Decode
}
public override object DecodePng()
{
int result = GetTimeFromPng(WindowImage);
int result = GetTimeFromPng(WindowImage,OcrImage.WindowType.LapTime);
return result;
}
}
+1 -1
View File
@@ -15,7 +15,7 @@ namespace OCR_Decode
}
public override object DecodePng()
{
int result = GetTimeFromPng(WindowImage);
int result = GetTimeFromPng(WindowImage, OcrImage.WindowType.Sector);
return result;
}
}
+1 -1
View File
@@ -15,7 +15,7 @@ namespace OCR_Decode
}
public override object DecodePng()
{
int result = GetTimeFromPng(WindowImage);
int result = GetTimeFromPng(WindowImage, OcrImage.WindowType.Sector);
return result;
}
}
+1 -1
View File
@@ -15,7 +15,7 @@ namespace OCR_Decode
}
public override object DecodePng()
{
int result = GetTimeFromPng(WindowImage);
int result = GetTimeFromPng(WindowImage,OcrImage.WindowType.Sector);
return result;
}
}
+30 -3
View File
@@ -11,22 +11,49 @@ namespace OCR_Decode
{
//AT LEAST PART OF THIS CLASS HAVE BEEN CREATED USING CHATGPT
//Just so you know
internal class OcrImage
public class OcrImage
{
Bitmap InputImage;
public enum WindowType
{
LapTime,
Text,
Sector,
Gap,
}
public OcrImage(Bitmap inputImage)
{
InputImage = inputImage;
}
public Bitmap Enhance()
public Bitmap Enhance(WindowType type = WindowType.Text)
{
Bitmap result = (Bitmap)InputImage.Clone();
switch (type)
{
case WindowType.LapTime:
result = Grayscale(result);
result = InvertColors(result);
//result = Resize(result);
result = Tresholding(result, 165);
result = Resize(result);
result = Resize(result);
break;
case WindowType.Text:
result = Grayscale(result);
result = InvertColors(result);
result = Tresholding(result, 165);
//result = Erode(result,1);
result = Resize(result);
result = Dilatation(result, 1);
break;
default:
result = Tresholding(result, 165);
result = Resize(result);
result = Resize(result);
result = Erode(result, 1);
break;
}
//result = Dilatation(result, 1);
return result;
}
+1 -1
View File
@@ -252,7 +252,7 @@ namespace OCR_Decode
int seconds = (int)((amountOfMs - (minuts*60f*1000f))/1000);
int ms = amountOfMs - ((minuts * 60 * 1000) + (seconds * 1000));
return minuts + ":" + seconds + ":" + ms;
return minuts + ":" + seconds.ToString("00") + ":" + ms.ToString("000");
}
public Bitmap Draw(int idImage)
{
+24 -6
View File
@@ -57,14 +57,29 @@ namespace OCR_Decode
return stream.ToArray();
}
}
public static int GetTimeFromPng(Bitmap wImage)
public static int GetTimeFromPng(Bitmap wImage,OcrImage.WindowType type)
{
string rawResult = "";
int result = 0;
Engine.SetVariable("tessedit_char_whitelist", "0123456789:.");
switch (type)
{
case OcrImage.WindowType.Sector:
Engine.SetVariable("tessedit_char_whitelist", "0123456789.");
break;
case OcrImage.WindowType.LapTime:
Engine.SetVariable("tessedit_char_whitelist", "0123456789.:");
break;
case OcrImage.WindowType.Gap:
Engine.SetVariable("tessedit_char_whitelist", "0123456789.+");
break;
default:
Engine.SetVariable("tessedit_char_whitelist", "");
break;
}
Bitmap enhancedImage = new OcrImage(wImage).Enhance();
Bitmap enhancedImage = new OcrImage(wImage).Enhance(type);
var tessImage = Pix.LoadFromMemory(ImageToByte(enhancedImage));
@@ -93,9 +108,9 @@ namespace OCR_Decode
List<string> rawNumbers;
//Removes all non digit chars except for the important ones
//We will need to change this when trying to see the Leader and Lap texts
//string cleanedResult = Regex.Replace(rawResult, "[^0-9.:]", "");
//In the gaps we can find '+' but we dont care about it its redondant
if(type == OcrImage.WindowType.Gap)
rawResult = Regex.Replace(rawResult, "[^0-9.:]", "");
//Splits into minuts seconds miliseconds
rawNumbers = rawResult.Split('.', ':').ToList<string>();
@@ -164,6 +179,9 @@ namespace OCR_Decode
result += iter.GetText(PageIteratorLevel.Word);
} while (iter.Next(PageIteratorLevel.Word));
}
enhancedImage.Save(Reader.DEBUG_DUMP_FOLDER + Regex.Replace(result, "[^0-9A-Za-z]", "") + ".png");
page.Dispose();
return result;
}