Now the images are changing

This commit is contained in:
2023-05-11 07:00:50 +02:00
parent 2c1340780e
commit 57028f1fc9
4 changed files with 9 additions and 39 deletions
+1 -1
View File
@@ -25,7 +25,7 @@ namespace Test_Merge
Bitmap screen = Emulator.Screenshot(); Bitmap screen = Emulator.Screenshot();
screen.Save("SCREEEEEEEEN.png"); screen.Save("SCREEEEEEEEN.png");
Reader.ChangeImage(screen); Reader.ChangeImage(screen);
tbxResult.Text = await Reader.Decode(Reader.MainZones,Reader.Drivers,screen); tbxResult.Text = await Reader.Decode(Reader.MainZones,Reader.Drivers);
} }
} }
private void btnSettings_Click(object sender, EventArgs e) private void btnSettings_Click(object sender, EventArgs e)
+3 -3
View File
@@ -154,7 +154,7 @@ namespace Test_Merge
/// </summary> /// </summary>
/// <param name="idImage">The id of the image we are working with</param> /// <param name="idImage">The id of the image we are working with</param>
/// <returns>a string representation of all the returns</returns> /// <returns>a string representation of all the returns</returns>
public async Task<string> Decode(List<Zone> mainZones,List<string> drivers, Bitmap imageToDecode) public async Task<string> Decode(List<Zone> mainZones,List<string> drivers)
{ {
string result = ""; string result = "";
List<DriverData> mainResults = new List<DriverData>(); List<DriverData> mainResults = new List<DriverData>();
@@ -192,9 +192,9 @@ namespace Test_Merge
public void ChangeImage(Bitmap Image) public void ChangeImage(Bitmap Image)
{ {
foreach (Zone BigZone in MainZones) foreach (Zone z in MainZones)
{ {
BigZone.Image = Image; z.Image = Image;
} }
} }
/// <summary> /// <summary>
+4 -4
View File
@@ -87,7 +87,7 @@ namespace Test_Merge
/// <param name="windowType">The type of window it is</param> /// <param name="windowType">The type of window it is</param>
/// <param name="Engine">The Tesseract Engine</param> /// <param name="Engine">The Tesseract Engine</param>
/// <returns>The time in milliseconds</returns> /// <returns>The time in milliseconds</returns>
public static async Task<int> GetTimeFromPng(Bitmap windowImage, OcrImage.WindowType windowType, TesseractEngine Engine) public static async Task<int> GetTimeFromPng(Bitmap image, OcrImage.WindowType windowType, TesseractEngine Engine)
{ {
//Kind of a big method but it has a lot of error handling and has to work with three special cases //Kind of a big method but it has a lot of error handling and has to work with three special cases
string rawResult = ""; string rawResult = "";
@@ -113,7 +113,7 @@ namespace Test_Merge
} }
Bitmap enhancedImage = new OcrImage(windowImage).Enhance(windowType); Bitmap enhancedImage = new OcrImage(image).Enhance(windowType);
var tessImage = Pix.LoadFromMemory(ImageToByte(enhancedImage)); var tessImage = Pix.LoadFromMemory(ImageToByte(enhancedImage));
@@ -227,13 +227,13 @@ namespace Test_Merge
/// <param name="allowedChars">The list of allowed chars</param> /// <param name="allowedChars">The list of allowed chars</param>
/// <param name="windowType">The type of window the text is on. Depending on the context the OCR will behave differently</param> /// <param name="windowType">The type of window the text is on. Depending on the context the OCR will behave differently</param>
/// <returns>the string it found</returns> /// <returns>the string it found</returns>
public static async Task<string> GetStringFromPng(Bitmap WindowImage, TesseractEngine Engine, string allowedChars = "", OcrImage.WindowType windowType = OcrImage.WindowType.Text) public static async Task<string> GetStringFromPng(Bitmap image, TesseractEngine Engine, string allowedChars = "", OcrImage.WindowType windowType = OcrImage.WindowType.Text)
{ {
string result = ""; string result = "";
Engine.SetVariable("tessedit_char_whitelist", allowedChars); Engine.SetVariable("tessedit_char_whitelist", allowedChars);
Bitmap rawData = WindowImage; Bitmap rawData = image;
Bitmap enhancedImage = new OcrImage(rawData).Enhance(windowType); Bitmap enhancedImage = new OcrImage(rawData).Enhance(windowType);
Page page = Engine.Process(enhancedImage); Page page = Engine.Process(enhancedImage);
+1 -31
View File
@@ -38,7 +38,7 @@ namespace Test_Merge
set set
{ {
//It automatically sets the image for the contained windows and zones //It automatically sets the image for the contained windows and zones
_image = Image; _image = value;
foreach (Window w in Windows) foreach (Window w in Windows)
{ {
w.Image = ZoneImage; w.Image = ZoneImage;
@@ -88,36 +88,6 @@ namespace Test_Merge
/// <returns>A driver data object that contains all the infos about a driver</returns> /// <returns>A driver data object that contains all the infos about a driver</returns>
public virtual async Task<DriverData> Decode(List<string> driverList) public virtual async Task<DriverData> Decode(List<string> driverList)
{ {
/*
int sectorCount = 0;
DriverData result = new DriverData();
Parallel.ForEach(Windows, async w =>
{
// 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);
if (w is DriverDrsWindow)
result.DRS = (bool)await (w as DriverDrsWindow).DecodePng();
if (w is DriverGapToLeaderWindow)
result.GapToLeader = (int)await (w as DriverGapToLeaderWindow).DecodePng();
if (w is DriverLapTimeWindow)
result.LapTime = (int)await (w as DriverLapTimeWindow).DecodePng();
if (w is DriverPositionWindow)
result.Position = (int)await (w as DriverPositionWindow).DecodePng();
if (w is DriverSectorWindow)
{
sectorCount++;
if (sectorCount == 1)
result.Sector1 = (int)await (w as DriverSectorWindow).DecodePng();
if (sectorCount == 2)
result.Sector2 = (int)await (w as DriverSectorWindow).DecodePng();
if (sectorCount == 3)
result.Sector3 = (int)await (w as DriverSectorWindow).DecodePng();
}
if (w is DriverTyresWindow)
result.CurrentTyre = (Tyre)await (w as DriverTyresWindow).DecodePng();
});
*/
int sectorCount = 0; int sectorCount = 0;
DriverData result = new DriverData(); DriverData result = new DriverData();
foreach(Window w in Windows) foreach(Window w in Windows)