赞
踩
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Drawing.Imaging;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- using System.Threading;
- using System.Diagnostics;
- using OpenQA.Selenium.Appium.Windows;
- using OpenQA.Selenium.Remote;
- using System.IO;
- using OpenQA.Selenium;
- using AForge;
- using AForge.Imaging;
- using AForge.Imaging.Textures;
- using AForge.Imaging.Filters;
- using AForge.Math;
- using asprise_ocr_api;
- using IronOcr;
- using System.Runtime.InteropServices;
-
- namespace WindowsFormsApp3
- {
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- }
-
-
- private void button1_Click(object sender, EventArgs e)
- {
-
- //AspriseOCR.SetUp();
- //AspriseOCR ocr = new AspriseOCR();
- //ocr.StartEngine("eng", AspriseOCR.SPEED_FASTEST);
-
- Bitmap a = new Bitmap(@"d:\4.png");
- Bitmap b = ToGray(a);
- Bitmap c = GrayReverse(b);
- //Bitmap d = ConvertTo1Bpp1(c);
- Bitmap d = GetBinaryzationImage1(c);
- d.Save(@"d:\4.bmp");
-
- //string s = ocr.Recognize(@"d:\3.bmp", -1, -1, -1, -1, -1, AspriseOCR.RECOGNIZE_TYPE_ALL, AspriseOCR.OUTPUT_FORMAT_PLAINTEXT);
- //MessageBox.Show(s);
- //ocr.StopEngine();
-
-
- //var Ocr = new AutoOcr();
- //var result = Ocr.Read(@"d:\4.bmp");
- //MessageBox.Show(result.Text);
-
- var Ocr = new AdvancedOcr()
- {
- CleanBackgroundNoise = true,
- EnhanceContrast = true,
- EnhanceResolution = true,
- Language = IronOcr.Languages.English.OcrLanguagePack,
- Strategy = IronOcr.AdvancedOcr.OcrStrategy.Advanced,
- ColorSpace = AdvancedOcr.OcrColorSpace.Color,
- DetectWhiteTextOnDarkBackgrounds = true,
- InputImageType = AdvancedOcr.InputTypes.AutoDetect,
- RotateAndStraighten = true,
- ReadBarCodes = true,
- ColorDepth = 4
- };
-
- var testImage = @"d:\4.bmp";
-
- var Results = Ocr.Read(testImage);
-
- //var Barcodes = Results.Barcodes.Select(b => b.Value);
-
- MessageBox.Show(Results.Text);
-
-
-
-
- }
-
- private Bitmap GetBinaryzationImage1(Bitmap image)
- {
- Bitmap result = image.Clone() as Bitmap;
- // 计算灰度平均值
- List<int> tempList = new List<int>();
- for (int i = 0; i < result.Width; i++)
- {
- for (int j = 0; j < result.Height; j++)
- {
- tempList.Add(result.GetPixel(i, j).R);
- }
- }
- double average = tempList.Average();
-
-
- Color color = new Color();
- for (int i = 0; i < result.Width; i++)
- {
- for (int j = 0; j < result.Height; j++)
- {
- color = result.GetPixel(i, j);
- if ((color.R + color.G + color.B) / 3 > average)
- {
- result.SetPixel(i, j, Color.White);
- }
- else
- {
- result.SetPixel(i, j, Color.Black);
- }
- }
- }
-
- return result;
- }
-
- public static Bitmap ToGray(Bitmap bmp)
- {
- for (int i = 0; i < bmp.Width; i++)
- {
- for (int j = 0; j < bmp.Height; j++)
- {
- //获取该点的像素的RGB的颜色
- Color color = bmp.GetPixel(i, j);
- //利用公式计算灰度值
- int gray = (int)(color.R * 0.3 + color.G * 0.59 + color.B * 0.11);
- Color newColor = Color.FromArgb(gray, gray, gray);
- bmp.SetPixel(i, j, newColor);
- }
- }
- return bmp;
- }
-
- public static Bitmap GrayReverse(Bitmap bmp)
- {
- for (int i = 0; i < bmp.Width; i++)
- {
- for (int j = 0; j < bmp.Height; j++)
- {
- //获取该点的像素的RGB的颜色
- Color color = bmp.GetPixel(i, j);
- Color newColor = Color.FromArgb(255 - color.R, 255 - color.G, 255 - color.B);
- bmp.SetPixel(i, j, newColor);
- }
- }
- return bmp;
- }
-
- public static Bitmap ConvertTo1Bpp1(Bitmap bmp)
- {
- int average = 0;
- for (int i = 0; i < bmp.Width; i++)
- {
- for (int j = 0; j < bmp.Height; j++)
- {
- Color color = bmp.GetPixel(i, j);
- average += color.B;
- }
- }
- average = (int)average / (bmp.Width * bmp.Height);
-
- for (int i = 0; i < bmp.Width; i++)
- {
- for (int j = 0; j < bmp.Height; j++)
- {
- //获取该点的像素的RGB的颜色
- Color color = bmp.GetPixel(i, j);
- int value = 255 - color.B;
- Color newColor = value > average ? Color.FromArgb(0, 0, 0) : Color.FromArgb(255,255, 255);
- bmp.SetPixel(i, j, newColor);
- }
- }
- return bmp;
- }
-
- public static Bitmap ConvertTo1Bpp2(Bitmap img)
- {
- int w = img.Width;
- int h = img.Height;
- Bitmap bmp = new Bitmap(w, h, PixelFormat.Format1bppIndexed);
- BitmapData data = bmp.LockBits(new Rectangle(0, 0, w, h), ImageLockMode.ReadWrite,PixelFormat.Format1bppIndexed);
- for (int y = 0; y < h; y++)
- {
- byte[] scan = new byte[(w + 7) / 8];
- for (int x = 0; x < w; x++)
- {
- Color c = img.GetPixel(x, y);
- if (c.GetBrightness() >= 0.5) scan[x / 8] |= (byte)(0x80 >> (x % 8));
- }
-
- Marshal.Copy(scan, 0, (IntPtr)((int)data.Scan0 + data.Stride * y), scan.Length);
- }
- return bmp;
- }
-
-
-
-
- }
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。