免费教程_免费网赚教程_破解版软件-寂涯网络学习基地

当前位置: 主页 > 系统综合 > 各类编程 > VB识别倾斜验证码详解(基于模板库匹配)(6)

VB识别倾斜验证码详解(基于模板库匹配)(6)

时间:2012-01-09 16:37来源:未知 整理:寂涯网络 点击:


            If Abs(nCount_Middle - Number_Count_Middle(j)) > 6 Then Total
= Total + Abs(nCount_Middle - Number_Count_Middle(j)) * 2 Else _
               Total = Total + Abs(nCount_Middle  - Number_Count_Middle(j))
If Abs(nCount_Down  -  Number_Count_Down(j)) > 6 Then Total = Total +
Abs(nCount_Down - Number_Count_Down(j)) * 2 Else _
Total = Total + Abs(nCount_Down - Number_Count_Down(j))
If Abs(nCount_Left  -  Number_Count_Left(j)) > 6 Then Total = Total +
Abs(nCount_Left - Number_Count_Left(j)) Else _

 Total = Total + Abs(nCount_Left  -
Number_Count_Left(j)) * 0.5
            If Abs(nCount_Right  -  Number_Count_Right(j)) > 6 Then Total = Total
+ Abs(nCount_Right - Number_Count_Right(j)) Else _
               Total = Total + Abs(nCount_Right  -  Number_Count_Right(j)) * 0.5
            If Total < MinVal Then
                MinVal = Total
                Result(i) = j
                'MsgBox MinVal & "    " & j
            End If
        Next
    Next i
    LblResult.Caption = "识别结果:" & Result(0) & Result(1) & Result(2) &
Result(3)
End Sub

上述代码中,变量 Total 用于统计总的差异值。在某个区域内,如果差异值大于 6,
那么它需要乘以2再加到Total上,这样是为了扩大差异。当一个区域中的差异特别大时候,
那么我们基本可以排除这个数字,于是将差异扩大。
另外值得注意的是,上、中、下三部分的参数是 100%,而左、右两侧的参数是 50%。
产生倾斜后,上中下的可信度没有发生太大改变,但是左右的可信度已经降低,于是人工置
50%。
窗体载入时,我们把Settings.ini中的数据读入全局变量中,避免识别时再次进行文
件读写操作。

Option Explicit
'声明两个数组,保存统计的像素点
Dim Number_Count_Up(0 To 9) As Integer
Dim Number_Count_Middle(0 To 9) As Integer
Dim Number_Count_Down(0 To 9) As Integer
Dim Number_Count_Left(0 To 9) As Integer
Dim Number_Count_Right(0 To 9) As Integer
Private Sub Form_Load()
'Picture1中默认已装载一张验证码
    Picture1.AutoRedraw = True
    Picture2.AutoRedraw = True
    '读入每个数字的深色像素点统计个数
    Dim i As Integer
    For i = 0 To 9
        Number_Count_Up(i) = GetValueFromIni(App.Path & "\Settings.ini",
"Count", "Number" & i & "_Up")
        Number_Count_Middle(i) = GetValueFromIni(App.Path &
"\Settings.ini", "Count", "Number" & i & "_Middle")
        Number_Count_Down(i) = GetValueFromIni(App.Path & "\Settings.ini",
"Count", "Number" & i & "_Down")
        Number_Count_Left(i) = GetValueFromIni(App.Path & "\Settings.ini",
"Count", "Number" & i & "_Left")
        Number_Count_Right(i) = GetValueFromIni(App.Path & "\Settings.ini",
"Count", "Number" & i & "_Right")
    Next
End Sub

到此代码编写结束,运行示例程序,如图4所示:

图5 程序运行效果

本文介绍了识别倾斜验证码的一种简单方法:分区块统计像素点个数。采用此方法可以
很容易识别区块差异很大的数字,例如:7,1,4。但程序对0,6,8,9等数字的识别成功
率却不高。
以后我们将讨论采取更多方法识别倾斜验证码,以提高识别的成功率。

本页地址 http://www.jybase.net/biancheng/20120109745.html

百度搜索更多

谷歌搜索更多

顶一下
(1)
50%
踩一下
(1)
50%
------分隔线----------------------------

评价:
昵称: 验证码:点击我更换图片
推荐内容
赞助商
赞助商


关于本站免责声明视频更新google百度地图视频地图RRS订阅

如有什么问题请在本站留言,或发邮件到 hxt167#foxmail.com