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

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

None.gif
' ls = SetPixel(GetDC(0), WordX, WordY, vbGreen)
None.gif
WordX  =  LeftKong
None.gifWordY 
=  TopKong
None.gif
None.gifZuiHouMa 
=   ""
None.gif
None.gif
For  i  =   0   To  MaNub  -   1
None.gif        
None.gif    ImgStr 
=   ""
None.gif    
None.gif    
For  m  =   0   To  Gao  -   1
None.gif        
For  n  =   0   To  Kuan  -   1
None.gif            lColor 
=  GetPixel(Picture1.hdc, WordX  +  n, WordY  +  m)
None.gif            
If  GetRedValue(lColor)  >   100   And  GetGreenValue(lColor)  <   100   And  GetBlueValue(lColor)  <   100   Then
None.gif                ImgStr 
=  ImgStr  &   " 1 "
None.gif            
Else
None.gif                ImgStr 
=  ImgStr  &   " 0 "
None.gif            
End   If
None.gif        
Next  n
None.gif    
Next  m
None.gif
None.gif    YZMa 
=   9
None.gif    CYL(YZMa) 
=   100
None.gif    
For  m  =   0   To   9
None.gif        CYL(m) 
=   0
None.gif        
For  n  =   0   To  Kuan  *  Gao  -   1
None.gif            
If  ( Mid (FontDat(m), n  +   1 1 =   " 1 " And  ( Mid (ImgStr, n  +   1 1 =   " 0 " Then  CYL(m)  =  CYL(m)  +   1
None.gif            
If  ( Mid (FontDat(m), n  +   1 1 =   " 0 " And  ( Mid (ImgStr, n  +   1 1 =   " 1 " Then  CYL(m)  =  CYL(m)  +   1
None.gif        
Next  n
None.gif        
If  CYL(m)  <  CYL(YZMa)  Then  YZMa  =  m
None.gif    
Next  m
None.gif    ZuiHouMa 
=  ZuiHouMa  &   Trim ( Hex (YZMa))
None.gif    WordX 
=  WordX  +  Kuan  +  RightKong
None.gif            
None.gif
Next  i
None.gifText1.Text 
=  ZuiHouMa
None.gif


程序运行界面如下:
snap2.jpg

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

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

 

转载于:https://www.cnblogs.com/spy/archive/2006/02/13/329926.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值