示例#1
0
        public OCRReader(OCRFont font, Color bgOrFontColor, bool useForeColor)
        {
            BgOrForeColor = bgOrFontColor;
            UseForeGround = useForeColor;
            Font = font;

            if (Font.Symbols.Select(c=>c.Name).Contains("$"))
            {
                PlayerStackDollarWidth = Font.Symbols.Where(c => c.Name == "$").Single().Width;
                PlayerStackDotWidth = Font.Symbols.Where(c => c.Name == ".").Single().Width;
            }
        }
示例#2
0
        public OCRReader(OCRFont font, Color bgOrFontColor, bool useForeColor)
        {
            BgOrForeColor = bgOrFontColor;
            UseForeGround = useForeColor;
            Font          = font;

            if (Font.Symbols.Select(c => c.Name).Contains("$"))
            {
                PlayerStackDollarWidth = Font.Symbols.Where(c => c.Name == "$").Single().Width;
                PlayerStackDotWidth    = Font.Symbols.Where(c => c.Name == ".").Single().Width;
            }
        }
示例#3
0
        public MainForm()
        {
            InitializeComponent();

            var prms = Environment.CommandLine.Split(' ');
            if (prms.Length >= 2)
            {
                var startFont = prms[1];
                if (File.Exists(startFont.Trim('"')))
                {
                    _font = OCRFont.Load(startFont.Trim('"'));
                    ReloadFont();
                }
            }
        }
示例#4
0
        private void button1_Click(object sender, EventArgs e)
        {
            int[] RGB;

            if (checkBox1.Checked)
            {
                RGB = new[] { 255, 255, 255 };
            }
            else
            {
                RGB = new[] { 0, 0, 0 };
            }

            _font = OCRFont.Load(button2.Text);

            _reader = new OCRReader(_font, Color.FromArgb(RGB[0], RGB[1], RGB[2]),
                                    checkBox1.Checked ? true : false);

            if ((_font == null) || (pictureBox1.Image == null))
            {
                MessageBox.Show("Выберите изображение и шрифт");
                return;
            }

            var d = DateTime.Now;

            var img = (Bitmap) pictureBox1.Image;
            Bitmap s;

            textBox1.Text = _reader.Recognize(ref img, out s);

            pictureBox2.Image = _reader.Crop((Bitmap) pictureBox1.Image);

            pictureBox3.Image = s;

            var time = DateTime.Now - d;

            button1.Text = time.TotalMilliseconds.ToString();
        }
示例#5
0
 private void импортToolStripMenuItem_Click(object sender, EventArgs e)
 {
     var w = new ImportForm();
     w.ShowDialog();
     if (ImportForm.ClosedByOk)
     {
         _font = ImportForm.OCRFont;
         ReloadFont();
     }
 }
示例#6
0
 private void загрузитьToolStripMenuItem_Click(object sender, EventArgs e)
 {
     var dlg = new OpenFileDialog();
     dlg.Filter = "*.pft|*.pft";
     if (dlg.ShowDialog() == DialogResult.OK)
     {
         _font = OCRFont.Load(dlg.FileName);
         ReloadFont();
     }
 }
示例#7
0
        private void button3_Click(object sender, EventArgs e)
        {
            try
            {
                RGB = new[] {int.Parse(textBox1.Text), int.Parse(textBox2.Text), int.Parse(textBox3.Text)};

                var files = _dir.GetFiles("*.png", SearchOption.AllDirectories);

                var symbols = new List<OCRSymbol>();
                foreach (var fileInfo in files)
                {
                    var img = (Bitmap) Image.FromFile(fileInfo.FullName);
                    var s = new OCRSymbol(fileInfo.Name.Substring(0, fileInfo.Name.LastIndexOf(".")), img.Width,
                                          img.Height);

                    var good = new List<Point>();
                    var bad = new List<Point>();

                    for (int i = 0; i < img.Width; i++)
                    {
                        for (int j = 0; j < img.Height; j++)
                        {
                            var pixel = img.GetPixel(i, j);

                            if ((pixel.R == RGB[0])&& (pixel.G == RGB[1])&&(pixel.B==RGB[2]))
                            {
                                bad.Add(new Point(i,j));
                            }
                            else
                            {
                                good.Add(new Point(i, j));
                            }

                        }
                    }
                    s.Good = good;
                    s.Bad = bad;
                    symbols.Add(s);
                }

                var maxWidth = symbols.Max(c => c.Width);
                var maxHeight = symbols.Max(c => c.Height);

                symbols.ForEach(c => c.TopOffset = maxHeight - c.Height);

                OCRFont = new OCRFont(maxWidth, maxHeight);

                OCRFont.Symbols = symbols;

                ClosedByOk = true;
                Close();
            }
            catch (Exception)
            {
                MessageBox.Show("Ошибка ввода");
                throw;
            }
        }