From d60de1a0c0191cc31e4326ebf65c92b00e44e8ba Mon Sep 17 00:00:00 2001 From: maxluli Date: Fri, 31 Mar 2023 14:36:28 +0200 Subject: [PATCH] Cleaned up a little bit to make room for the windows --- OCR_tester/Form1.Designer.cs | 18 +++++++- OCR_tester/Form1.cs | 86 ++++++++++++++++++++++++++---------- OCR_tester/MainZone.cs | 31 ++++++------- 3 files changed, 93 insertions(+), 42 deletions(-) diff --git a/OCR_tester/Form1.Designer.cs b/OCR_tester/Form1.Designer.cs index 3f2d353..7ab9485 100644 --- a/OCR_tester/Form1.Designer.cs +++ b/OCR_tester/Form1.Designer.cs @@ -35,7 +35,9 @@ this.btnDeleteZone = new System.Windows.Forms.Button(); this.btnDeleteWindow = new System.Windows.Forms.Button(); this.panel2 = new System.Windows.Forms.Panel(); + this.pbxWindow = new System.Windows.Forms.PictureBox(); ((System.ComponentModel.ISupportInitialize)(this.pbxInput)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pbxWindow)).BeginInit(); this.SuspendLayout(); // // pbxInput @@ -73,6 +75,7 @@ this.btnCreateWindow.TabIndex = 5; this.btnCreateWindow.Text = "Create Window"; this.btnCreateWindow.UseVisualStyleBackColor = true; + this.btnCreateWindow.Click += new System.EventHandler(this.btnCreateWindow_Click); // // btnDeleteZone // @@ -82,6 +85,7 @@ this.btnDeleteZone.TabIndex = 6; this.btnDeleteZone.Text = "Delete Zone"; this.btnDeleteZone.UseVisualStyleBackColor = true; + this.btnDeleteZone.Click += new System.EventHandler(this.btnDeleteZone_Click); // // btnDeleteWindow // @@ -99,11 +103,21 @@ this.panel2.Size = new System.Drawing.Size(268, 154); this.panel2.TabIndex = 5; // + // pbxWindow + // + this.pbxWindow.Location = new System.Drawing.Point(12, 558); + this.pbxWindow.Name = "pbxWindow"; + this.pbxWindow.Size = new System.Drawing.Size(960, 42); + this.pbxWindow.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.pbxWindow.TabIndex = 8; + this.pbxWindow.TabStop = false; + // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(1264, 558); + this.ClientSize = new System.Drawing.Size(1264, 612); + this.Controls.Add(this.pbxWindow); this.Controls.Add(this.panel2); this.Controls.Add(this.btnDeleteWindow); this.Controls.Add(this.btnDeleteZone); @@ -114,6 +128,7 @@ this.Name = "Form1"; this.Text = "OCR tester"; ((System.ComponentModel.ISupportInitialize)(this.pbxInput)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pbxWindow)).EndInit(); this.ResumeLayout(false); } @@ -127,6 +142,7 @@ private System.Windows.Forms.Button btnDeleteZone; private System.Windows.Forms.Button btnDeleteWindow; private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.PictureBox pbxWindow; } } diff --git a/OCR_tester/Form1.cs b/OCR_tester/Form1.cs index 4abea3f..49bc71f 100644 --- a/OCR_tester/Form1.cs +++ b/OCR_tester/Form1.cs @@ -17,28 +17,69 @@ namespace OCR_tester const string DEFAULT_IMAGE_NAME = "screen_"; //You will need to add a number and extension after it ex: screen_2.png const string ENGLISH_TESSDATA_FILENAME = "eng.traineddata"; const string DEFAULT_CREATEZONE_BUTTON_TEXT = "Create Zone"; + const string DEFAULT_CREATEWINDOW_BUTTON_TEXT = "Create Window"; + + Point[] zonePoints; + Point[] windowPoints; - Point[] zonePoints = new Point[2] { new Point(-1, -1), new Point(-1, -1) }; bool selectingZonePoints = false; + bool selectingWindowPoints = false; public Form1() { InitializeComponent(); + reload(); + } + private void reload() + { pbxInput.Image = Image.FromFile(Path.Combine(imagesFolder.FullName, DEFAULT_IMAGE_NAME + "30.png")); } - - private void btnCreateZone_Click(object sender, EventArgs e) + private void SwitchCreateZoneButton() { - if (selectingZonePoints) + if (!selectingWindowPoints) { - btnCreateZone.Text = DEFAULT_CREATEZONE_BUTTON_TEXT; - selectingZonePoints = false; + if (selectingWindowPoints) + SwitchCreateWindowButton(); + selectingZonePoints = true; + zonePoints = new Point[] { new Point(-1, -1), new Point(-1, -1) }; } else { - selectingZonePoints = true; - zonePoints = new Point[2] { new Point(-1, -1), new Point(-1, -1) }; - btnCreateZone.Text = "Points remaining : " + ZonePointsRemaining(); + selectingZonePoints = false; } + + UpdateCreateZoneButton(); + } + private void SwitchCreateWindowButton() + { + if (!selectingWindowPoints) + { + if (selectingZonePoints) + SwitchCreateZoneButton(); + selectingWindowPoints = true; + windowPoints = new Point[] { new Point(-1, -1), new Point(-1, -1) }; + } + else + { + selectingWindowPoints = false; + } + + UpdateCreateWindowButton(); + } + private void UpdateCreateWindowButton() + { + btnCreateWindow.Text = "Points remaining : " + ZonePointsRemaining(); + } + private void UpdateCreateZoneButton() + { + btnCreateZone.Text = "Points remaining : " + ZonePointsRemaining(); + } + private void btnCreateZone_Click(object sender, EventArgs e) + { + SwitchCreateZoneButton(); + } + private void btnCreateWindow_Click(object sender, EventArgs e) + { + SwitchCreateWindowButton(); } private int ZonePointsRemaining() { @@ -53,11 +94,7 @@ namespace OCR_tester private void pbxInput_Click(object sender, EventArgs e) { - MouseEventArgs me = (MouseEventArgs)e; - //Point coordinates = new Point(Cursor.Location.X - pbxInput.Location.X,Cursor.Location.Y-pbxInput.Location.Y); - //Point coordinates = new Point(me.X,me.Y); - Point coordinates = pbxInput.PointToClient(new Point(MousePosition.X, MousePosition.Y)); - //MessageBox.Show("Coordinates "+coordinates.X+":"+coordinates.Y); + Point coordinates = pbxInput.PointToClient(new Point(MousePosition.X, MousePosition.Y)); float xOffset = (float)pbxInput.Image.Width / (float)pbxInput.Width; float yOffset = (float)pbxInput.Image.Height / (float)pbxInput.Height; @@ -65,25 +102,28 @@ namespace OCR_tester { int remaining = ZonePointsRemaining(); int index = (zonePoints.Length) - remaining; - zonePoints[index] = new Point(Convert.ToInt32((float)coordinates.X * xOffset),Convert.ToInt32((float)coordinates.Y * yOffset)); + zonePoints[index] = new Point(Convert.ToInt32((float)coordinates.X * xOffset), Convert.ToInt32((float)coordinates.Y * yOffset)); remaining -= 1; - btnCreateZone.Text = "Points remaining : " + remaining; if (remaining == 0) { - selectingZonePoints = false; - btnCreateZone.Text = DEFAULT_CREATEZONE_BUTTON_TEXT; - - //CREATE MAIN ZONE Image fullImage = pbxInput.Image; - //13 186 - //1920 960 HARD CODED Size newSize = new Size(zonePoints[1].X - zonePoints[0].X, zonePoints[1].Y - zonePoints[0].Y); MainZone mainZone = new MainZone(fullImage, new Rectangle(zonePoints[0], newSize)); pbxInput.Image = mainZone.Draw(); - } + SwitchCreateZoneButton(); + } + else + { + UpdateCreateZoneButton(); + } } } + + private void btnDeleteZone_Click(object sender, EventArgs e) + { + reload(); + } } } diff --git a/OCR_tester/MainZone.cs b/OCR_tester/MainZone.cs index 7f4dfb8..2cc19bb 100644 --- a/OCR_tester/MainZone.cs +++ b/OCR_tester/MainZone.cs @@ -20,7 +20,7 @@ namespace OCR_tester public void AutoCalibrate() { List detectedText = new List(); - Windows = new List(); + Zones = new List(); TesseractEngine engine = new TesseractEngine(Window.tessDataFolder.FullName, "eng", EngineMode.Default); Image image = ZoneImage; @@ -61,23 +61,15 @@ namespace OCR_tester } } } while (iter.Next(PageIteratorLevel.Word)); - - foreach (Rectangle Rectangle in detectedText) - { - Rectangle windowRectangle; - Size windowSize = new Size(image.Width, image.Height / NUMBER_OF_DRIVERS); - Point windowLocation = new Point(0, (Rectangle.Y + Rectangle.Height / 2) - windowSize.Height / 2); - windowRectangle = new Rectangle(windowLocation,windowSize); - - Windows.Add(new Window(ZoneImage,windowRectangle)); - } } - - //Now that we have all the detected text we can try to split the zone - - foreach (Rectangle rect in detectedText) + foreach (Rectangle Rectangle in detectedText) { - //To do + Rectangle windowRectangle; + Size windowSize = new Size(image.Width, image.Height / NUMBER_OF_DRIVERS); + Point windowLocation = new Point(0, (Rectangle.Y + Rectangle.Height / 2) - windowSize.Height / 2); + windowRectangle = new Rectangle(windowLocation, windowSize); + + Zones.Add(new Zone(ZoneImage, windowRectangle)); } } public Bitmap Draw() @@ -85,9 +77,12 @@ namespace OCR_tester Bitmap image = ZoneImage; Graphics g = Graphics.FromImage(image); - foreach (Window w in Windows) + int count = 0; + foreach (Zone z in Zones) { - g.DrawRectangle(Pens.Red,w.Bounds); + g.DrawRectangle(Pens.Red,z.Bounds); + z.ZoneImage.Save(@"C:\Users\Moi\Desktop\imgDump\"+"driver"+count+".png"); + count++; } image.Save(@"C:\Users\Moi\Desktop\imgDump\test.png"); return image;