private static void TestRedText() { var input = @"C:\Users\david\OneDrive\Documents\WFChatParser\ErrorImages\Screenshot (175).png"; var cleaner = new ImageCleaner(); cleaner.SaveChatColors(input, "test.png"); cleaner.SaveSoftMask(input, "test2.png"); var cp = new ChatParser(); var lines = cp.ParseChatImage(new Bitmap(input), false, false, 50); }
//private static void PrepareRivens() //{ // var r = new RivenCleaner(); // var p = new RivenParser(); // var totalSw = new Stopwatch(); // var opSw = new Stopwatch(); // var rivens = new List<Riven>(); // foreach (var riven in Directory.GetFiles(@"C:\Users\david\OneDrive\Documents\WFChatParser\Test Runs\Riven Inputs\").Where(f => !f.EndsWith("_white.png") && f.EndsWith(".png"))) // { // Console.WriteLine("\n" + riven.Substring(riven.LastIndexOf("\\") + 1)); // totalSw.Restart(); // opSw.Restart(); // r.PrepareRivenFromFullscreenImage(riven, riven + "_white.png"); // Console.WriteLine("cleanup: " + opSw.Elapsed.TotalSeconds + " seconds"); // opSw.Restart(); // var result = p.ParseRivenImage(riven + "_white.png"); // rivens.Add(result); // Console.WriteLine("Parsed: " + opSw.Elapsed.TotalSeconds + " seconds"); // opSw.Restart(); // Console.WriteLine(JsonConvert.SerializeObject(result)); // Console.WriteLine("Total: " + totalSw.Elapsed.TotalSeconds + " seconds"); // } // Console.WriteLine("\n"); // Console.WriteLine(JsonConvert.SerializeObject(rivens)); //} private static void FixImages() { var cleaner = new ImageCleaner(); cleaner.SaveChatColors(@"C:\Users\david\OneDrive\Documents\WFChatParser\Test Runs\Inputs\input.png", @"C:\Users\david\OneDrive\Documents\WFChatParser\Test Runs\Inputs\input_white.png"); var p = new ChatParser(); var r = p.ParseChatImage(new Bitmap(@"C:\Users\david\OneDrive\Documents\WFChatParser\Test Runs\Inputs\input.png")); foreach (var line in r) { Console.WriteLine(line.RawMessage); } }
private static void VisualizeClickpoints() { var cp = new ChatParser(); var r = cp.ParseChatImage(new Bitmap(@"C:\Users\david\OneDrive\Documents\WFChatParser\Test Runs\Inputs\bad.png")); var list = new CoordinateList(); r.Where(r1 => r1 is ChatMessageLineResult).Cast <ChatMessageLineResult>().SelectMany(r1 => r1.ClickPoints).ToList().ForEach(p => list.Add(p.X, p.Y)); var ic = new ImageCleaner(); ic.SaveClickMarkers(@"C:\Users\david\OneDrive\Documents\WFChatParser\Test Runs\Inputs\bad.png", Path.Combine(outputDir, "bad_clicks.png"), list); }
private static int VerifyNoErrors(int verboseLevel = 0, bool fastFail = false, int xOffset = 4) { var trainingImages = new List <string>(); Directory.GetFiles(@"C:\Users\david\OneDrive\Documents\WFChatParser\Test Runs\Validation Inputs").Where(f => f.EndsWith(".png")).ToList().ForEach(f => trainingImages.Add(f)); //Directory.GetFiles(@"C:\Users\david\OneDrive\Documents\WFChatParser\Notice Me Senpai\Char Spacing\").Where(f => f.EndsWith(".png")).ToList().ForEach(f => trainingImages.Add(f)); var trainingText = new List <string>(); Directory.GetFiles(@"C:\Users\david\OneDrive\Documents\WFChatParser\Test Runs\Validation Inputs").Where(f => f.EndsWith(".txt")).ToList().ForEach(f => trainingText.Add(f)); //Directory.GetFiles(@"C:\Users\david\OneDrive\Documents\WFChatParser\Notice Me Senpai\Char Spacing\").Where(f => f.EndsWith(".txt")).ToList().ForEach(f => trainingText.Add(f)); //var trainingImages = Directory.GetFiles(@"C:\Users\david\OneDrive\Documents\WFChatParser\Test Runs\OCR Test Inputs\").Where(f => f.EndsWith(".png")).ToArray(); //var trainingText = Directory.GetFiles(@"C:\Users\david\OneDrive\Documents\WFChatParser\Test Runs\OCR Test Inputs\").Where(f => f.EndsWith(".txt")).ToArray(); //var trainingImages = Directory.GetFiles(@"C:\Users\david\OneDrive\Documents\WFChatParser\Notice Me Senpai\Char Spacing\").Where(f => f.EndsWith("e1.png")).ToArray(); //var trainingText = Directory.GetFiles(@"C:\Users\david\OneDrive\Documents\WFChatParser\Notice Me Senpai\Char Spacing\").Where(f => f.EndsWith("e1.txt")).ToArray(); var errorCount = 0; for (int k = 0; k < trainingImages.Count; k++) { var fileInfo = new FileInfo(trainingText[k]); Console.WriteLine($"=={fileInfo.Name}=="); var masterKeyFile = trainingImages[k]; var correctResults = File.ReadAllLines(trainingText[k]).Select(line => line.Trim()).ToArray(); var c = new ChatParser(); var cleaner = new ImageCleaner(); cleaner.SaveChatColors(masterKeyFile, Path.Combine(outputDir, (new FileInfo(masterKeyFile)).Name)); var sw = new Stopwatch(); sw.Restart(); var result = c.ParseChatImage(new Bitmap(masterKeyFile), xOffset, false, false).Select(i => i.RawMessage.Trim()).ToArray(); Console.WriteLine("Parsed in: " + sw.Elapsed.TotalSeconds + " seconds"); sw.Stop(); Console.WriteLine("Expected"); Console.WriteLine("Recieved"); Console.WriteLine(); if (correctResults.Length != result.Length) { errorCount += correctResults.Length; return(errorCount); } for (int i = 0; i < result.Length; i++) { if (verboseLevel >= 1) { Console.WriteLine(correctResults[i]); Console.WriteLine(result[i]); } if (verboseLevel >= 2) { if (Enumerable.SequenceEqual(correctResults[i], result[i])) { Console.WriteLine("They match!"); } } if (!String.Equals(correctResults[i].Trim(), result[i])) { if (verboseLevel >= 2) { if (correctResults[i].Length == result[i].Length) { for (int j = 0; j < correctResults[i].Length; j++) { if (result[i][j] != correctResults[i][j]) { Console.WriteLine("^"); break; } else { Console.Write(" "); } } } Console.WriteLine("They don't match"); } errorCount++; } if (verboseLevel >= 2) { Console.WriteLine(); } } if (errorCount > 0 && fastFail) { return(errorCount); } } if (verboseLevel >= 2) { Console.WriteLine("Errors: " + errorCount); } return(errorCount); }
private static void TestRivenStuff() { var c = new GameCapture(); var rp = new RivenParser(); var ss = new ScreenStateHandler(); var image = "test.png"; var b = c.GetFullImage(); b.Save("test.png"); b.Dispose(); var p = new ChatParser(); var results = p.ParseChatImage(new Bitmap(image), true, true, 27).Where(r => r is ChatMessageLineResult).Cast <ChatMessageLineResult>(); var clean = new ImageCleaner(); var coords = new CoordinateList(); results.SelectMany(r => r.ClickPoints).ToList().ForEach(i => coords.Add(i.X, i.Y)); clean.SaveClickMarkers("test.png", "test_marked.png", coords); var mouse = new MouseHelper(); var index = 0; var sw = new Stopwatch(); foreach (var clr in results.Where(r => r is ChatMessageLineResult).Cast <ChatMessageLineResult>()) { foreach (var click in clr.ClickPoints) { b = c.GetFullImage(); if (ss.IsChatOpen(b)) { //Hover over riven System.Threading.Thread.Sleep(17); mouse.MoveTo(click.X, click.Y); //Click riven System.Threading.Thread.Sleep(17); mouse.Click(click.X, click.Y); System.Threading.Thread.Sleep(17); } //Move mouse out of the way mouse.MoveTo(0, 0); sw.Restart(); var tries = 0; while (true) { try { var bitmap2 = c.GetFullImage(); if (ss.GetScreenState(bitmap2) == ScreenState.RivenWindow) { var crop = rp.CropToRiven(bitmap2); crop.Save(index.ToString() + ".png"); crop.Dispose(); bitmap2.Dispose(); break; } bitmap2.Dispose(); } catch { } tries++; if (tries > 15) { Console.WriteLine("Riven not detected! Abort!"); break; } } Console.WriteLine("Got \"riven\" in " + sw.Elapsed.TotalSeconds + " seconds"); //Hover over exit System.Threading.Thread.Sleep(33); mouse.MoveTo(3816, 2013); //Click exit var bitmap = c.GetFullImage(); if (ss.GetScreenState(bitmap) == ScreenState.RivenWindow) { System.Threading.Thread.Sleep(17); mouse.Click(3816, 2013); System.Threading.Thread.Sleep(17); } bitmap.Dispose(); //Move mouse out of the way System.Threading.Thread.Sleep(17); mouse.MoveTo(0, 0); System.Threading.Thread.Sleep(17); index++; } } //c.Dispose(); }