diff --git a/OCR_Decode/DriverTyresWindow.cs b/OCR_Decode/DriverTyresWindow.cs index e73ab6d..b554f4c 100644 --- a/OCR_Decode/DriverTyresWindow.cs +++ b/OCR_Decode/DriverTyresWindow.cs @@ -15,9 +15,10 @@ namespace OCR_Decode public static Color SOFT_TYRE_COLOR = Color.FromArgb(0xff, 0x00, 0x00); public static Color MEDIUM_TYRE_COLOR = Color.FromArgb(0xf5, 0xbf, 0x00); - public static Color HARD_TYRE_COLOR = Color.FromArgb(0xd9, 0xd8, 0xd4); + public static Color HARD_TYRE_COLOR = Color.FromArgb(0xa4, 0xa5, 0xa8); public static Color INTER_TYRE_COLOR = Color.FromArgb(0x00, 0xa4, 0x2e); public static Color WET_TYRE_COLOR = Color.FromArgb(0x27, 0x60, 0xa6); + public static Color EMPTY_COLOR = Color.FromArgb(0x20,0x20,0x20); public DriverTyresWindow(Bitmap image, Rectangle bounds) : base(image, bounds) { @@ -34,50 +35,18 @@ namespace OCR_Decode //tyreZone.Save(Reader.DEBUG_DUMP_FOLDER + "ZONE" + ".png"); Tyre.Type type = Tyre.Type.Undefined; + type = GetTyreTypeFromColor(OcrImage.GetAvgColorFromBitmap(OcrImage.Resize(tyreZone, 2))); int laps = -1; - //MHIWsmhiw so we can detect Soft Medium Hard Inters and Wet tyres - string text = await GetStringFromPng(tyreZone,Engine, "SMHIW", OcrImage.WindowType.Tyre); - if (text.Length == 1 && text != "") + + string number = await GetStringFromPng(tyreZone, Engine, "0123456789", OcrImage.WindowType.Tyre); + try { - //We found a tire letter - laps = 0; - text = text.ToUpper(); - switch (text[0]) - { - case 'S': - type = Tyre.Type.Soft; - break; - case 'M': - type = Tyre.Type.Medium; - break; - case 'H': - type = Tyre.Type.Hard; - break; - case 'I': - type = Tyre.Type.Inter; - break; - case 'W': - type = Tyre.Type.Wet; - break; - default: - type = Tyre.Type.Undefined; - break; - } + laps = Convert.ToInt32(number); } - else + catch { - string number = await GetStringFromPng(tyreZone, Engine, "0123456789", OcrImage.WindowType.Tyre); - try - { - laps = Convert.ToInt32(number); - } - catch - { - laps = -1; - } - type = GetTyreTypeFromColor(OcrImage.GetAvgColorFromBitmap(OcrImage.Resize(tyreZone,2))); + //We could not convert the number } - //tyreZone.Save(Reader.DEBUG_DUMP_FOLDER + "Tyre" + type + "Laps" + laps + '#' + rnd.Next(0, 1000) + ".png"); return new Tyre(type, laps); } @@ -115,6 +84,7 @@ namespace OCR_Decode colors.Add(HARD_TYRE_COLOR); colors.Add(INTER_TYRE_COLOR); colors.Add(WET_TYRE_COLOR); + colors.Add(EMPTY_COLOR); Color closestColor = colors[0]; int closestDistance = int.MaxValue; @@ -139,6 +109,8 @@ namespace OCR_Decode type = Tyre.Type.Inter; if (closestColor == WET_TYRE_COLOR) type = Tyre.Type.Wet; + if (closestColor == EMPTY_COLOR) + return Tyre.Type.Undefined; return type; } diff --git a/OCR_Decode/Window.cs b/OCR_Decode/Window.cs index 221741b..a81ac6a 100644 --- a/OCR_Decode/Window.cs +++ b/OCR_Decode/Window.cs @@ -160,7 +160,7 @@ namespace OCR_Decode } } } - enhancedImage.Save(Reader.DEBUG_DUMP_FOLDER + Regex.Replace(rawResult, "[^0-9A-Za-z]", "") + ".png"); + //enhancedImage.Save(Reader.DEBUG_DUMP_FOLDER + Regex.Replace(rawResult, "[^0-9A-Za-z]", "") + ".png"); page.Dispose(); return result; }