From 592025e283cba9d031570d6b09432119c8cda3ad Mon Sep 17 00:00:00 2001 From: maxluli Date: Fri, 12 May 2023 08:24:16 +0200 Subject: [PATCH] Deactivated all the OCR methods to rework them --- Test_Merge/Form1.Designer.cs | 1 + Test_Merge/Form1.cs | 6 ++-- Test_Merge/Reader.cs | 2 +- Test_Merge/Window.cs | 56 ++++++++++++++++++++++++++++++++++++ Test_Merge/Zone.cs | 27 +++++++++++------ 5 files changed, 79 insertions(+), 13 deletions(-) diff --git a/Test_Merge/Form1.Designer.cs b/Test_Merge/Form1.Designer.cs index 6b3d131..9baf1b8 100644 --- a/Test_Merge/Form1.Designer.cs +++ b/Test_Merge/Form1.Designer.cs @@ -68,6 +68,7 @@ this.pbxResult.Location = new System.Drawing.Point(328, 71); this.pbxResult.Name = "pbxResult"; this.pbxResult.Size = new System.Drawing.Size(460, 249); + this.pbxResult.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; this.pbxResult.TabIndex = 3; this.pbxResult.TabStop = false; // diff --git a/Test_Merge/Form1.cs b/Test_Merge/Form1.cs index 7be0875..a9d6bca 100644 --- a/Test_Merge/Form1.cs +++ b/Test_Merge/Form1.cs @@ -59,9 +59,9 @@ namespace Test_Merge string configFile = "./Presets/Clean_4K_2023.json"; string gpUrl = "https://f1tv.formula1.com/detail/1000006688/2023-azerbaijan-grand-prix?action=play"; - //Emulator = new F1TVEmulator(gpUrl); - //await Emulator.Start(); - //Reader = new Reader(configFile,Emulator.Screenshot(),true); + Emulator = new F1TVEmulator(gpUrl); + await Emulator.Start(); + Reader = new Reader(configFile,Emulator.Screenshot(),true); } private void btnUpdate_Click(object sender, EventArgs e) diff --git a/Test_Merge/Reader.cs b/Test_Merge/Reader.cs index 11d7882..57bcd1d 100644 --- a/Test_Merge/Reader.cs +++ b/Test_Merge/Reader.cs @@ -227,7 +227,7 @@ namespace Test_Merge driverID++; if (driverID == 9) Console.WriteLine("AAAAA"); - z.ZoneImage.Save("PUTAIN_DE_PILOTE_N" + driverID + ".png"); + z.ZoneImage.Save("Driver" + driverID + ".png"); mainResults.Add(await z.Decode(drivers)); } break; diff --git a/Test_Merge/Window.cs b/Test_Merge/Window.cs index 419cfe2..f04af20 100644 --- a/Test_Merge/Window.cs +++ b/Test_Merge/Window.cs @@ -207,9 +207,65 @@ namespace Test_Merge { if (rawNumbers.Count == 1) { + //If this code is used it means that its bad ... + //The methods that comes are really not that great and are juste quick fixes try { result = Convert.ToInt32(rawNumbers[0]); + + switch (windowType) + { + case OcrImage.WindowType.Sector: + //The usual sector is in this form : 33.456 + if (rawNumbers[0].Length == 6) + { + //The '.' has been understood like a number + result = 0; + result += Convert.ToInt32(rawNumbers[0][0] + rawNumbers[0][1]) * 1000; + result += Convert.ToInt32(rawNumbers[0][3] + rawNumbers[0][4] + rawNumbers[0][5]); + } + if (rawNumbers[0].Length == 5) + { + //The '.' has been overlooked + result = 0; + result += Convert.ToInt32(rawNumbers[0][0] + rawNumbers[0][1]) * 1000; + result += Convert.ToInt32(rawNumbers[0][2] + rawNumbers[0][3] + rawNumbers[0][4]); + } + break; + case OcrImage.WindowType.LapTime: + //The usual Lap time is in this form : 1:45:345 + result = 0; + if (rawNumbers[0].Length == 6) + { + //The '.' and ':' have been overlooked + //I Know Im skipping the cases where there are more than 9 minuts but it happens so rarely that... we dont care + result += Convert.ToInt32(rawNumbers[0][0]) * 60000; + result += Convert.ToInt32(rawNumbers[0][1] + rawNumbers[0][2]) * 1000; + result += Convert.ToInt32(rawNumbers[0][3] + rawNumbers[0][4] + rawNumbers[0][5]); + } + if (rawNumbers[0].Length == 7) + { + //There is two possibilities + //Either 1:45.140 has been interpreted as 1145.10 or 1:451140. We will assume its the first one + result += Convert.ToInt32(rawNumbers[0][0]) * 60000; + result += Convert.ToInt32(rawNumbers[0][2] + rawNumbers[0][3]) * 1000; + result += Convert.ToInt32(rawNumbers[0][4] + rawNumbers[0][5] + rawNumbers[0][6]); + } + break; + case OcrImage.WindowType.Gap: + //The usual Gap is in this form : + 34.567 + if (rawNumbers[0].Length == 5) + { + //The '.' has been overlooked + result += Convert.ToInt32(rawNumbers[0][0] + rawNumbers[0][1]) * 1000; + result += Convert.ToInt32(rawNumbers[0][2] + rawNumbers[0][3] + rawNumbers[0][4]); + } + break; + } + if (rawNumbers[0].Length > 6) + { + //The number definitely has been interpreted wrong + } } catch { diff --git a/Test_Merge/Zone.cs b/Test_Merge/Zone.cs index 39df6a5..a680f17 100644 --- a/Test_Merge/Zone.cs +++ b/Test_Merge/Zone.cs @@ -94,27 +94,36 @@ namespace Test_Merge { // A switch would be prettier but I dont think its supported in this C# version 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) - result.DRS = (bool)await (w as DriverDrsWindow).DecodePng(); + //result.DRS = (bool)await (w as DriverDrsWindow).DecodePng(); + result.DRS = false; 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) - result.LapTime = (int)await (w as DriverLapTimeWindow).DecodePng(); + //result.LapTime = (int)await (w as DriverLapTimeWindow).DecodePng(); + result.LapTime = 0; if (w is DriverPositionWindow) - result.Position = (int)await (w as DriverPositionWindow).DecodePng(); + //result.Position = (int)await (w as DriverPositionWindow).DecodePng(); + result.Position = 0; if (w is DriverSectorWindow) { sectorCount++; 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) - result.Sector2 = (int)await (w as DriverSectorWindow).DecodePng(); + //result.Sector2 = (int)await (w as DriverSectorWindow).DecodePng(); + result.Sector2 = 0; 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) - result.CurrentTyre = (Tyre)await (w as DriverTyresWindow).DecodePng(); + //result.CurrentTyre = (Tyre)await (w as DriverTyresWindow).DecodePng(); + result.CurrentTyre = new Tyre(Tyre.Type.Undefined,0); } return result; }