Files
OCR_TEST/OCR_tester/Form1.cs
T

130 lines
4.2 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
namespace OCR_tester
{
public partial class Form1 : Form
{
DirectoryInfo imagesFolder = new DirectoryInfo(@"C:\Users\Moi\Pictures\SeleniumScreens\DataSetHighRes");
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;
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 SwitchCreateZoneButton()
{
if (!selectingWindowPoints)
{
if (selectingWindowPoints)
SwitchCreateWindowButton();
selectingZonePoints = true;
zonePoints = new Point[] { new Point(-1, -1), new Point(-1, -1) };
}
else
{
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()
{
int remaining = 0;
foreach (Point p in zonePoints)
{
if (p.X == -1 && p.Y == -1)
remaining++;
}
return remaining;
}
private void pbxInput_Click(object sender, EventArgs e)
{
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;
if (selectingZonePoints)
{
int remaining = ZonePointsRemaining();
int index = (zonePoints.Length) - remaining;
zonePoints[index] = new Point(Convert.ToInt32((float)coordinates.X * xOffset), Convert.ToInt32((float)coordinates.Y * yOffset));
remaining -= 1;
if (remaining == 0)
{
Image fullImage = pbxInput.Image;
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();
}
}
}