C# AspriseOCR 验证码识别(第二讲)

我也是个小白,也是再摸索中,如果有高手的话请一定要教教我哈。写这个文章也是为了不让自己忘记。

C# AspriseOCR 验证码识别(第一讲)http://blog.csdn.net/arv002/article/details/54020654

一、一般来说验证码的图片都是来源于网络,所以我们先从网络中获取图片。

        public Image get_image(string url)
        {
            WebRequest webreq = WebRequest.Create(url); // url是网络图片的地址。。 
            WebResponse webres = webreq.GetResponse();
            Stream stream = webres.GetResponseStream();
            System.Drawing.Image image;
            image = System.Drawing.Image.FromStream(stream);
            stream.Close();
            return image;
        }

二、本地图片获取就很简单了。

Image mm = Image.FromFile("D:\\4.png");

三、去除掉相关颜色(比如背景中有一些固定背景干扰点,这个颜色需要人为的去获取,因为每个人遇到的验证码可能都不一样)颜色都是按照RGB来计算的。

将图片的每个像素点都遍历一次,将遇到的颜色设置为白色即可,这个是一个方法,具体的使用还是需要根据个人情况来定。

	Bitmap btp = new Bitmap(mm);
        Color c = new Color();
        int rr, gg, bb;
        for (int i = 0; i < btp.Width; i++)
            {
                for (int j = 0; j < btp.Height; j++)
                {
                    //取图片当前的像素点
                    c = btp.GetPixel(i, j);
                    rr = c.R; gg = c.G; bb = c.B;
                    //改变颜色
                    if (rr == 204 && gg == 255 && bb == 255)
                    {
                        //重新设置当前的像素点
                        btp.SetPixel(i, j, Color.FromArgb(255, 255, 255, 255));
                    }
                    if (rr == 255 && gg == 213 && bb == 255)
                    {
                        //重新设置当前的像素点
                        btp.SetPixel(i, j, Color.FromArgb(255, 255, 255, 255));
                    } if (rr == 204 && gg == 213 && bb == 255)
                    {
                        //重新设置当前的像素点
                        btp.SetPixel(i, j, Color.FromArgb(255, 255, 255, 255));
                    }

                    if (rr == 255 && gg == 0 && bb == 0)
                    {
                        //重新设置当前的像素点
                        btp.SetPixel(i, j, Color.FromArgb(255, 255, 255, 255));
                    }
                    if (rr == 153 && gg == 0 && bb == 51)
                    {
                        //重新设置当前的像素点
                        btp.SetPixel(i, j, Color.FromArgb(255, 255, 255, 255));
                    }
                    if (rr == 0 && gg == 0 && bb == 0)
                    {
                        //重新设置当前的像素点
                        btp.SetPixel(i, j, Color.FromArgb(255, 255, 255, 255));
                    }
                }
            }

3.灰度设置(我看到灰度的计算算法和我参考的代码不一样,为什么要这么设置有懂的话可以告诉我一下哈)

RGB转灰度值参考 http://blog.csdn.net/cool1949/article/details/6649429

 Bitmap bmphd = btp;
            for (int i = 0; i < bmphd.Width; i++)
            {
                for (int j = 0; j < bmphd.Height; j++)
                {
                    //取图片当前的像素点
                    var color = bmphd.GetPixel(i, j);

                    var gray = (int)(color.R * 0.001 + color.G * 0.700 + color.B * 0.250);

                    //重新设置当前的像素点
                    bmphd.SetPixel(i, j, Color.FromArgb(gray, gray, gray));
                }
            }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三雷科技

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值