Cleaned up a little bit to make room for the windows

This commit is contained in:
2023-03-31 14:36:28 +02:00
parent dc6a6ee74d
commit d60de1a0c0
3 changed files with 93 additions and 42 deletions
+17 -1
View File
@@ -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;
}
}
+60 -20
View File
@@ -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) };
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);
float xOffset = (float)pbxInput.Image.Width / (float)pbxInput.Width;
float yOffset = (float)pbxInput.Image.Height / (float)pbxInput.Height;
@@ -67,23 +104,26 @@ namespace OCR_tester
int index = (zonePoints.Length) - remaining;
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();
}
}
}
+8 -13
View File
@@ -20,7 +20,7 @@ namespace OCR_tester
public void AutoCalibrate()
{
List<Rectangle> detectedText = new List<Rectangle>();
Windows = new List<Window>();
Zones = new List<Zone>();
TesseractEngine engine = new TesseractEngine(Window.tessDataFolder.FullName, "eng", EngineMode.Default);
Image image = ZoneImage;
@@ -61,7 +61,7 @@ namespace OCR_tester
}
}
} while (iter.Next(PageIteratorLevel.Word));
}
foreach (Rectangle Rectangle in detectedText)
{
Rectangle windowRectangle;
@@ -69,15 +69,7 @@ namespace OCR_tester
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)
{
//To do
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;