| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6350 人关注过本帖, 1 人收藏
标题:[原创]新做了个 规范数字验证码识别(带制作模板的功能--改进了)
只看楼主 加入收藏
田里兵蜂
Rank: 1
等 级:新手上路
威 望:2
帖 子:604
专家分:0
注 册:2007-1-29
收藏(1)
 问题点数:0 回复次数:17 
[原创]新做了个 规范数字验证码识别(带制作模板的功能--改进了)

*/ --------------------------------------------------------------------------------------
*/ 出自: 编程中国 http://www.bc-cn.net
*/ 作者: 田里兵蜂
*/ 时间: 2007-8-20 编程论坛首发
*/ 声明: 尊重作者劳动,转载请保留本段文字
*/ --------------------------------------------------------------------------------------

使用msinet控件下载验证码图片.我只做了识别的部分.

识别的是:http://www.mytv365.net/ 这个网站的验证码

在网上看了会资料,稀里糊涂的,就自己想试试
[attach]27926[/attach]

[此贴子已经被作者于2007-9-23 10:47:00编辑过]



CRANQ1t6.jpg (884 Bytes)
图片附件: 游客没有浏览图片的权限,请 登录注册


kPwfkGJQ.rar (4.76 KB) [原创]简单验证码识表



EsvgdHkK.jpg (6.3 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 数字 模板 功能 验证 改进 
2007-08-20 12:30
随风逐流
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:passerby
等 级:版主
威 望:8
帖 子:4054
专家分:271
注 册:2007-6-13
收藏
得分:0 
这么有耐心,楼猪不去分析网游封包,可惜了

[url=http://www./html/6/6694/]极道金丹[/url][url=http://www./html/2/2849/]九阴九阳[/url][url=http://www./html/2/2596/]凡人修仙传[/url]
2007-08-20 14:48
cqhydz
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2007-9-1
收藏
得分:0 
写的不错,只是不手工定义计算位置能更好一点就完美了
2007-09-02 18:35
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
收藏
得分:0 

http://m1902.spaces.live.com/blog/cns!7D900B760C56FA84!174.entry

可惜了 是VB.Net 的

[CODE]Imports System.Drawing
Public Class yzm
Private Structure RChar '字符特征码
Dim MyChar As Char
Dim MyCharInfo(,) As Byte ' 0..63,0..63
End Structure
Private Structure RCharInfo '字符特征文件
Dim Sng As UInteger '文件类型标识
Dim Ver As Single '版本号
Dim charWidth As Byte, charheight As Byte '字符宽度和高度
Dim X0 As Byte ' 第一个字符开始x偏移
Dim TotalChars As Byte '图象字符总数
Dim allcharinfo() As RChar ' 0..9
End Structure
Private MyCharInfo As New RCharInfo
Public Function ShowAllCharInfo() As Bitmap
'根据学习后的字符特征码显示所有字符
Dim Result As New Bitmap((MyCharInfo.charWidth + 5) * 10 - 5, MyCharInfo.charheight)
Dim i As Integer, j As Integer, k As Integer
For i = 0 To (MyCharInfo.charWidth + 5) * 10 - 6
For j = 0 To MyCharInfo.charheight - 1
Result.SetPixel(i, j, Color.GreenYellow)
Next
Next
With Result
For k = 0 To 9
For i = 0 To MyCharInfo.charWidth - 1
For j = 0 To MyCharInfo.charheight - 1
If MyCharInfo.allcharinfo(k).MyCharInfo(i, j) > 0 Then
.SetPixel(i + k * MyCharInfo.charWidth + 5, j, Color.Black)
End If
Next
Next
Next
End With
ShowAllCharInfo = Result
End Function
Public Sub InteCharInfo(ByVal Charwidth As Short, ByVal X0 As Short, ByVal Length As UInteger, ByVal Height As UInteger)
'根据不同情况初始化特征码信息
With MyCharInfo
.Sng = 751115327
.Ver = 1.1
.TotalChars = Length
.charWidth = Charwidth
.charheight = Height
.X0 = X0
End With
Dim k As UInteger, I As UInteger, J As UInteger
For k = 0 To 9
For I = 0 To 49
For J = 0 To 49
MyCharInfo.allcharinfo(k).MyCharInfo(I, J) = 1
Next
Next
Next
End Sub
Public Sub GetCharInfoFromImage(ByVal MyCanvas As Bitmap, ByVal CharInfo As String)
'学习一个附加码的所有字符
Dim i As UInteger, x As UInteger
For i = 1 To MyCharInfo.TotalChars
x = MyCharInfo.X0 + MyCharInfo.charWidth * (i - 1)
ModifyInfo(MyCanvas, CharInfo(i - 1), x, MyCharInfo.charWidth, MyCharInfo.charheight)
Next
End Sub
Public Function GetStringFromImage(ByVal SBMP As Bitmap) As String
'从图片中识别字串
Dim k As Integer, m As Integer, x As Integer
Dim result As String = ""
For k = 0 To MyCharInfo.TotalChars - 1
x = MyCharInfo.X0 + MyCharInfo.charWidth * k
For m = 9 To 0 Step -1
If CMPBMP(SBMP, x, m) = 0 Then
result &= m.ToString
Exit For
End If
If m = 0 Then result &= "?"
Next
Next
GetStringFromImage = result
End Function
Private Function CMPBMP(ByVal sBMP As Bitmap, ByVal x0 As Integer, ByVal m As Integer) As Integer
Dim i As Integer, j As Integer
Dim result As Integer = 0
For i = 0 To MyCharInfo.charWidth - 1
For j = 0 To MyCharInfo.charheight - 1
If (GetColorValue(sBMP, x0 + i, j) > 0) And (MyCharInfo.allcharinfo(m).MyCharInfo(i, j) = 1) Then
result += 1
End If
Next
Next
CMPBMP = result
End Function
Public Sub New()
ReDim MyCharInfo.allcharinfo(9)
Dim I As UInteger
For I = 0 To 9
ReDim MyCharInfo.allcharinfo(I).MyCharInfo(49, 49)
Next
End Sub
Private Sub ModifyInfo(ByVal MyCanvas As Bitmap, ByVal MyChar As Char, ByVal X0 As Integer, ByVal CharWidth As Integer, ByVal CharHeight As Integer)
'修正指定字符特征码
Dim i As Integer, j As Integer
For i = 0 To CharWidth
For j = 0 To CharHeight
If GetColorValue(MyCanvas, X0 + i, j) > 0 Then
MyCharInfo.allcharinfo(Val(MyChar)).MyChar = MyChar
MyCharInfo.allcharinfo(Val(MyChar)).MyCharInfo(i, j) = 0
End If
Next
Next
End Sub
Private Function GetColorValue(ByVal Bitmap As Bitmap, ByVal x As Integer, ByVal y As Integer) As Integer
If (x >= Bitmap.Width) Or (x < 0) Or (y >= Bitmap.Height) Or (y < 0) Then Return 0
Dim r As Byte, g As Byte, b As Byte
r = Bitmap.GetPixel(x, y).R
g = Bitmap.GetPixel(x, y).G
b = Bitmap.GetPixel(x, y).B
GetColorValue = ((r * 256) + g) * 256 + b
Debug.Print(GetColorValue)
End Function
End Class[/CODE]

2007-09-02 20:35
田里兵蜂
Rank: 1
等 级:新手上路
威 望:2
帖 子:604
专家分:0
注 册:2007-1-29
收藏
得分:0 
0SH1jD8b.rar (45.43 KB)

[此贴子已经被作者于2007-9-23 11:50:14编辑过]



b0O4QPTM.rar (40.92 KB) [原创]新做了个 规范数字验证码识别(带制作模板的功能)



9pPzq6xU.jpg (35.03 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册


4xN0rnmg.jpg (26.83 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册


B6WXLSGS.jpg (26.76 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册


CZYDElCY.jpg (4.14 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
2007-09-22 22:57
秋风拂柳
Rank: 1
等 级:新手上路
帖 子:105
专家分:0
注 册:2007-9-12
收藏
得分:0 
厉害

◆ωǒ嘚丗堺o﹎習慣了①個ré n靜靜dêヤ发呆.?уi个人ˋzi уoμ *.自﹎在 .o
2007-09-22 23:07
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
收藏
得分:0 
居然要1秒才能识别,开什么玩笑啊……一问,你什么鬼算法?二问,你什么鬼CPU?
2007-09-23 08:39
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 
好用.

我的msn: myfend@
2007-09-23 08:53
田里兵蜂
Rank: 1
等 级:新手上路
威 望:2
帖 子:604
专家分:0
注 册:2007-1-29
收藏
得分:0 
以下是引用multiple1902在2007-9-23 8:39:14的发言:
居然要1秒才能识别,开什么玩笑啊……一问,你什么鬼算法?二问,你什么鬼CPU?

大哥,我不知道具体识别时间呀,反正点击识别就能识别出来,所以我才说1秒


识别算法就是跟模板比较

2007-09-23 10:39
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
收藏
得分:0 
以下是引用田里兵蜂在2007-9-23 10:39:41的发言:

大哥,我不知道具体识别时间呀,反正点击识别就能识别出来,所以我才说1秒


识别算法就是跟模板比较

跟模板比较是正确的方法

[此贴子已经被作者于2007-9-23 10:46:22编辑过]



vlxufzpk.jpg (36.05 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册


WaPf4Ot0.jpg (36.05 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册


RldixGZu.jpg (36.05 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
2007-09-23 10:43
快速回复:[原创]新做了个 规范数字验证码识别(带制作模板的功能--改进了)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019793 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved