由于网页上的验证码图片都是通过程序产生的,因此,各个字母之间也都比较规则,进行识别其中的字符的话,也比较简单,只要将图片进行相减后,看看和那个字母的图片接近即可.
下面,我就那我们公司的外网邮箱:http://mail.lida-oe.com.cn的网页中的验证码为例子,我写了一个程序.
【网通】点击这里下载全部源程序 【电信、网通】点击这里下载源程序
【下载说明】
1、单击上面这个地址,打开下载页面。
2、点普通下载--等待30秒--点“下载”按钮--保存
整个程序的过程是这样的:
1 获取网页中的图片的地址,并下载到本地
2 对图像的像素中的A(透明度)值,来对图像进行二值化处理
3 对整个图片进行裁剪,仅裁剪出包含字符的区域
4 使用投影法对图像进行分割,从而保证每个分割区域仅包含一个字符
5 对分割出来的图片,再次进行裁剪,使得整个字符充满图片框,并大小一致
6 因此对分割出来的字符图片与图片库中的图片进行比较,相差最小的仅为字符.
我首先是搜集了多幅的验证码图片,以便能够得到所有的字符的图片. 然后,对这些搜集来的图片进行分割,从而得到包含26个字母的图片. 将这些图片作为图片库, 之后将从网页中获取的图片分割出来的字符图片,与此对比,从而得到识别结果.
截图如下:

获取网页中验证码图片之后,如上图。

将图片进行“二值化”之后的图片,如上图。

之后,对图片进行剪裁,如上图。

再使用投影法,分割出每个字符,如上图。

将分割出来的字符进行剪裁,如上图。

最终,通过与样本库的字符图片进行对比,识别出图片中的字母。
部分源程序:
主要源程序(由于做的比较急,并未对程序结构进行优化):
/*
* Created by SharpDevelop.
* User: Administrator
* Date: 2012-6-11
* Time: 11:46
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Collections.Generic;
usin

本文介绍了一种使用C#获取网页验证码图片并识别字母的方法。程序包括下载图片、二值化处理、裁剪、投影法分割字符、对比字符图片库进行识别等步骤。通过示例展示了从获取验证码到识别出字母的完整过程。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



