验证码识别笔记(二)

这是验证码识别的第二篇,先看一下样图吧,就是下面那张。

看到这张图片,直观上就知道比第一篇中的要简单,这个“简单”用语言来描述,可以得到下面的几条结论:

1. 图片中的字符边界比较清晰,并且单个字符的内容比较单纯;

2. 虽然字符间有粘连,但是绿色边界围住的白色区域没有粘连,并且颜色一致,可以通过找连通分量的办法把字符分离出来。

通过上面的分析,接下来的事就很简单了。我觉得编码很简单,只看编码不可能写出好东西来,只有领会思路,理解方法才能触类旁通。

好了,下面就是接下来的步骤:

1. 使用合适的阈值,对图片进行二值化处理;

2. 使用BFS找出所有颜色为白色的连通分量;

3. 因为图片在二值化之后,底色为白色,所以上图会找出5个连通分量,四个字符和一个整幅图片去掉字符的分量;

下面四个就是从样图中找到的连通分量:

      

4. 去掉过大的那个连通分量,如果留下的连通分量如果不等于四个,则直接退出,如果等于四个,继续进行算法;

注:这种情况是存在的,如果字符之间粘连区域过大,或者字符过小,一个字符被分割成两个分量,但是因为验证码识别的特殊性,所以容许有一定的错误率存在,只要有成功的次数多余失败次数,这样的算法就是可行的。

5. 将找到的连通分量和模板进行匹配,找到匹配度最大的模板,返回对应的字符。

模板的做法:

因为该网站的验证码字体比较单一,所以下载一定数量的验证码图片,覆盖所有可能的字符种类,通过上面的方法,二值化之后找到所有的连通分量,将这些找到的连通分量进行人工分类标号,最后得到可以用的模板。

找连通分量的代码可以参考:GitHub

转载于:https://www.cnblogs.com/flyingpeguin/p/3518155.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460606.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

dd命令:用于读取、转换并输出数据

以下内容源于网络资源的学习与整理,如有侵权请告知删除。 命令作用 从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。 参数说明 if文件名:输入文件名,默认为标准输入。即指定源文…

centos6.5下搭建oracle 11g

为什么80%的码农都做不了架构师?>>> 安装依赖 yum install binutils compat-libstdc-33 compat-libstdc-33.i686 \ elfutils-libelf elfutils-libelf-devel gcc gcc-c glibc glibc.i686 \ glibc-common glibc-devel glibc-devel.i686 glibc-headers ksh…

Unix基本系统数据类型和stat结构体

Unix基本系统数据类型 历史上,某些UNIX变量已与某些C数据类型联系在一起,例如,历史上主、次设备号存放在一个1 6位的短整型中, 8位表示主设备号,另外8位表示次设备号。但是,很多较大的系统需要用多于256个值…

回环设备(/dev/loop*)与losetup命令

以下内容源于网络资源的学习与整理,如有侵权请告知删除。 一、前言 之前曾利用losetup命令进行根文件系统镜像文件的制作,但不明白其命令含义。 二、回环设备 命名方式 回环设备一般以 /dev/loop* 方式命名。 回环设备的含义 回环设备是一种伪设备&#…

oracle中游标的使用

1)--- 使用带参数的游标;declareCURSOR stock_cur(symbol_in VARCHAR2) IS SELECT * FROM rate_combine_nr nr WHERE nr.combine_nosymbol_in;stock_info stock_cur%ROWTYPE; beginOPEN stock_cur(G600000001); --打开游标;loop FETCH stock_cur INTO stock_inf…

JS 学习笔记--11---内置对象(Global/Math)

练习中使用的浏览器是IE10,如果各位朋友有不同意见或者遇到浏览器不兼容问题,希望指正 1、内置对象的定义:有ECMAScript实现提供的、不依赖与宿主环境的对象,在ECMAScript运行之前就已经创建好的对象就叫做内置对象。就是说&…

SQL Server 视图设计器

SQL Server 中经常需要写一些查询,关联好多张表,显示无数个列。如果使用视图设计器,可以大大提高效率,同是减少差错。1. 启动视图设计器为数据库“新建视图”,将启用视图设计器。2. 添加表在起始界面,将出现…

Linux系统的目录树

更多详细内容,见Linux目录树详解(转)_peniel_shen的博客-CSDN博客 Linux系统的目录树: rootubuntu:/# tree -L 1 . ├── bin //保存系统自身启动和运行时可能会用到的核心二进制程序。 ├── boot //保存系统引导启动时要…

Android 4 学习(19):Services

参考《Professional Android 4 Development》 Services Service是invisible的,因此其优先级不高于visible的Activity,之所以说不高于,是因为我们可以设置Service为在前台运行。 创建Service Android提供了Service抽象类,继承它便可…

ACL权限设定

1.ACL(Access Control List)可以针对单一使用者、单一档案或目录来进行r、w、x的权限规范。ACL主要针对以下方面来控制权限:1)使用者:可以针对使用者。来设定权限2)群组:针对群组为对象来设定其…

misc类设备驱动1——板载蜂鸣器驱动测试

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 一、驱动部分 1、前言 九鼎移植的内核已经提供了蜂鸣器驱动源码(在SI中搜索关键字buzzer,发现出现有x210-buzzer.c文件;或者在make menuconfig界面搜索buzzer&am…

【微信开发】上传下载多媒体文件

最近一段时间,开始入手了微信开发。感觉挺有意思的,虽然目前还是遇到了许多解决不了的问题。上传下载多媒体文件,这个作为高级接口的一部分功能,可能使用的人并不多,所以现在网上关于这个接口的使用教程很少。于是我就…

github和git@osc提交问题

为什么80%的码农都做不了架构师?>>> 今天想用gitosc push下测试下自己能否正常使用gitosc的git仓库的,公钥SSH 已经加好。 ssh -T gitgit.oschina.net 测试正常。 结果报错could not read Username for https://git.oschina.net: No such fi…

misc类设备驱动2——misc类设备的简介

以下内容源于朱有鹏嵌入式课程的学习与整理,如有其侵权请告知删除。 一、misc类设备的含义 1、名字含义 misc是英文Miscellaneous的缩写,中文意思是“杂项、混杂”,因此“misc类设备”也叫“杂项设备”或者“混杂设备”。因为这些字符设备不…

怎样跟踪来访用户?

某些监视方法是比较容易想到的,比如,当你登录网站的时候,它就可以知道你是谁了。但是这些网络监视系统是如何通过你的上网行为记录你的个人信息呢? 广告系统经常通过追踪用户行为的方法来建立用户信息库,以定位谁是目标…

舟桥test

<p>testaa</p><p><script src"https://gist.github.com/chengdongdong/6ecf6f921c818d84d7a1.js"></script></p>转载于:https://blog.51cto.com/zchengdong/1599304

misc类设备驱动3——misc驱动框架源码分析(核心层+具体操作层)

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有其侵权请告知删除。 前言 由misc类设备驱动1——misc类设备的简介可知&#xff0c;misc类设备驱动框架包括以下两部分&#xff1a; 1、内核开发者实现的部分 drivers/char/misc.c文件主要包括2个关键点&#xff1a;类…

mint锁屏设置

心血来潮&#xff0c;给笔记本装了linux&#xff0c;版本是当下最火的mint。唔&#xff0c;使用体验不错&#xff5e;下面记录的是修改mint锁屏相关设置的修改方式。 In Linux Mint 13, the screen lock feature is disabled by default. After being idle for a while, the sc…

effective C++ 读后笔记

首先不得不说侯捷翻译的书大部分我都很喜欢&#xff0c;因为侯捷本身是一名出色的C技术专家。这本书讲的是C如何高效的运行&#xff0c;我想要成为一名卓越的开发人员&#xff0c;代码的高效性是必不可少的。很多人的代码质量很差&#xff0c;即使能够勉强运行在以后的维护和重…

【百度地图API】如何制作班级地理通讯录?LBS通讯录

原文:【百度地图API】如何制作班级地理通讯录&#xff1f;LBS通讯录摘要&#xff1a;班级通讯录必备的功能&#xff0c;比如人员列表&#xff0c;人员地理位置标注&#xff0c;展示复杂信息窗口&#xff0c;公交和驾车等。一般班级人员都不会超过300个&#xff0c;因为可以高效…