注册 登录
编程论坛 VB6论坛

识别网络验证码

chen123free 发布于 2015-07-20 20:44, 2102 次点击
上海拍车牌,想做个识别网络验证码的程序,验证码只有数字,而且都还算清晰
思路1.用opencv图像处理来做
不知大神有其他什么思路吗
12 回复
#2
chen123free2015-07-20 20:45
补充,手速现在练到平均2500毫秒,但还是觉得太慢
#3
风吹过b2015-07-20 23:42
发个地址看看。有些验证码比较容易。
#4
chen123free2015-07-21 05:59
比如
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
#5
风吹过b2015-07-21 07:58
去杂色:
第1列(不一定,可能要后移几列)就二种颜色,一种是背景色,另一种就是杂色,这个好计算。
切割:感觉每个字符的宽度不一样,估计还是从颜色入手,相同颜色的是一个。
识别:简单一点,我想到就是区域匹配。把所能见到字符,进行编码,然后人工识别,建立已知字符库。使用时,按这样编码,去匹配,那个差别最小就那个。
#6
lianyicq2015-07-21 09:31
回复 楼主 chen123free
看看简单处理源图的结果,还没用到什么滤波算法就实现了滤波,很容易.
首先彩色转灰度,然后以128为阀值,转为黑白色图像,在此基础上再考虑识别算法,算法就太多了.
建议一个最简单,不需要更多知识的方法,找到所有数字不同字体的样本.看你源图,六个数字所在水平位置固定,可以考虑n条列扫描线,和样本列扫描线对比.
只有本站会员才能查看附件,请 登录
#7
chen123free2015-07-21 10:27
回复 6楼 lianyicq
谢谢这个思路
#8
chen123free2015-07-21 10:27
回复 5楼 风吹过b
好的,我顺着这个思路试试
#9
chen123free2015-07-22 17:11
没有什么头绪,唉
#10
风吹过b2015-07-22 20:40
今天仔细看了一下你提供的图像,
还是我想的太简单的,去杂色,还是直接去色好。
放大图像后,才每个点的颜色不一样,没办法根据颜色进行分割,
按6楼的方法去色吧。在去色的过程中去想办法切割。

识别算法多百度一下,找到一篇很好的文章,慢慢看吧。
http://www.
#11
lianyicq2015-07-23 09:11
回复 9楼 chen123free
不了解一些图像处理和模式识别的方法,没有头绪是正常的。
在做识别的时候关键还是在滤波。
本来对于开发网络上的验证码来说,成本远低于机器识别的成本,除非它是长时间不变,否则就变一下字体就可能造成机器识别无效。
不知道你是如何收集样本的,如果有3种字体,对应10个数字就有30个样本。这些样本都用10楼的方法进行滤波得到数字样本。
4张图片中,每张都是6个字符并且字符的水平位置固定,最简单的情况需要6条字符水平中心的列描扫线,与样本数据进行匹配。
数字样本到底选用哪一列做为特征要注意,一定和列描线对应。这些就要做大量的工作。至于匹配,可以采用knn算法,容易理解。
#12
chen123free2015-07-27 08:20
回复 10楼 风吹过b
好的,十分感谢
#13
chen123free2015-07-28 20:19
好好学习
1