(转)自动投票中验证码识别问题初探

本文介绍了一种固定位置验证码的识别方法,通过采样生成字模并对比来实现百分之百的识别准确率。文中提供了详细的识别算法代码及运行界面示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自动投票中验证码识别问题初探

现在很多网站投票、发帖都采取了验证码机制,如果验证码位置角度是固定的话,就可以采取先采样生成字模,然后进行对比,最后得到对应的验证码。这种方法基本上可以不用除噪,而且识别率达到百分之百准确。下面是我写的验证码识别代码:
Static  Words  As   Byte
Dim  i  As   Integer
Dim  m  As   Integer
Dim  n  As   Integer
Dim  FNum  As   Integer
Dim  ImgStr  As   String
Dim  Kuan  As   Integer
Dim  Gao  As   Integer
Dim  lColor  As   Long
Dim  MaNub  As   Integer
Dim  DImgStr  As   String
Dim  ZuiHouMa  As   String
Dim  YZMa  As   Integer
Dim  TopKong  As   Integer
Dim  LeftKong  As   Integer
Dim  RightKong  As   Integer
Dim  CYL( 0   To   15 As   Integer   ' 差异率
'
验证图片宽度55,高度16,从第六个点(编号5)开始,到第50个点(编号49)结束,共五个字,5*9=45 上空4下空2
'
验证图片宽度100 高度25 从26点开始,每字宽9,右空2,上空5,高13
MaNub  =   5     ' 一幅图里有几个码
Kuan  =   9
Gao 
=   13
TopKong 
=   5
LeftKong 
=   26
RightKong 
=   2
WordX 
=  ( Me .Left  +  Picture1.Left)  /  Screen.TwipsPerPixelX  +  LeftKong
WordY 
=  ( Me .Top  +  Picture1.Top)  /  Screen.TwipsPerPixelY  +  TopKong
' MsgBox WordX & WordY

' ls = SetPixel(GetDC(0), WordX, WordY, vbGreen)
WordX  =  LeftKong
WordY 
=  TopKong

ZuiHouMa 
=   ""

For  i  =   0   To  MaNub  -   1
        
    ImgStr 
=   ""
    
    
For  m  =   0   To  Gao  -   1
        
For  n  =   0   To  Kuan  -   1
            lColor 
=  GetPixel(Picture1.hdc, WordX  +  n, WordY  +  m)
            
If  GetRedValue(lColor)  >   100   And  GetGreenValue(lColor)  <   100   And  GetBlueValue(lColor)  <   100   Then
                ImgStr 
=  ImgStr  &   " 1 "
            
Else
                ImgStr 
=  ImgStr  &   " 0 "
            
End   If
        
Next  n
    
Next  m

    YZMa 
=   9
    CYL(YZMa) 
=   100
    
For  m  =   0   To   9
        CYL(m) 
=   0
        
For  n  =   0   To  Kuan  *  Gao  -   1
            
If  ( Mid (FontDat(m), n  +   1 1 =   " 1 " And  ( Mid (ImgStr, n  +   1 1 =   " 0 " Then  CYL(m)  =  CYL(m)  +   1
            
If  ( Mid (FontDat(m), n  +   1 1 =   " 0 " And  ( Mid (ImgStr, n  +   1 1 =   " 1 " Then  CYL(m)  =  CYL(m)  +   1
        
Next  n
        
If  CYL(m)  <  CYL(YZMa)  Then  YZMa  =  m
    
Next  m
    ZuiHouMa 
=  ZuiHouMa  &   Trim ( Hex (YZMa))
    WordX 
=  WordX  +  Kuan  +  RightKong
            
Next  i
Text1.Text 
=  ZuiHouMa


程序运行界面如下:


注:界面借用了网上下载的一个程序。。但识别内核是我自己写的。

DEMO程序如下:
http://my82163.51.net/readcode.rar

 

 

其它链接:

WebBrowser抓图示例——截取网页上的验证码图片

踏破铁鞋无觅处:网页下载图片的代码

自动更换IP的辅助投票工具

自动投票中验证码识别问题初探

关于自动投票工具软件的实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值