上一节,获取了网页验证码。这一节开始讲讲怎么识别验证码。
2、获取36个字符的特征码
2.1 分析验证码特征
验证码图片:
经研究,发现该网页验证码的图片中字符是由数字和大写字母组成,每张验证码4个字符。其中由于数字0、1和和字母O和I比较接近,所以这四个字符没有出现,再加上和2比较像的字母Z一共有5个字符没有,所以出现的字符只有35个。
验证码字符没有变形,大小一致。背景有噪点,大小不一。
2.3验证码字符特征码必须的流程:
图片特征码提取参考louislong007兄弟的博文做了修改(https://blog.csdn.net/louislong007/article/details/47683035)
2.4 图片灰度化
图片灰度化就是利用特定算法,将彩色图片中的每一个像素点R、G、B三个颜色分量转换为相同的色值(0-255)。
根据YUV的颜色空间中,Y的分量的物理意义是点的亮度,由该值反映亮度等级,根据RGB和YUV颜色空间的变化关系可建立亮度Y与R、G、B三个颜色分量的对应:Y=0.3R+0.59G+0.11B,以这个亮度值表达图像的灰度值。
''' <summary>
''' 函数功能:灰度化bitmap图像
''' </summary>
''' <param name="bmp">bitmap对象</param>
''' <returns>返回灰度化的bitmap对象</returns>
Public Function ConvertToGrayImage(ByVal bmp As Bitmap) As Bitmap
Dim bm As Bitmap = New Bitmap(bmp.Width, bmp.Height)
Dim i As Integer
Dim j As Integer
For i = 0 To bmp.Width - 1
For j = 0 To bmp.Height - 1
Dim color As Color = bmp.GetPixel(i, j) '获取该点的像素的RGB的颜色
'利用公式计算灰度值
'根据YUV的颜色空间中,Y的分量的物理意义是点的亮度,由该值反映亮度等级,
'根据RGB和YUV颜色空间的变化关系可建立亮度Y与R、G、B三个颜色分量的对应:
'Y=0.3R+0.59G+0.11B,以这个亮度值表达图像的灰度值
Dim