图像处理与机器学习(验证码的识别)

这个东西,从放寒假的前一天,老师叫我做起,已经快2个月了,开学一个星期后,在陈老师的督促下,算是做的差不多了。

这个的应用领域主要是自动化程序,验证码可以说是网络安全的一道防火墙,自动化程序的难点。

但是,对于这个图像识别这个技术来说,还远远不够,至于应用的角度,更是狭窄,因此这不是一个终点,恰恰是一个起点。

机器学习有监督学习和无监督学习两种;我这里是监督学习,当然就得我手动的写每一张验证码的正确值了。

语言:   python

工具:   opencv

总体思路:样本学习,测试;

1、样本学习:

  •   首先要对样本去噪,去噪将干扰线删除,对于一个像素点来说,他的四周的其余的点,有5个,或者较多的像素点是空白,那么将可以判断他是噪点,而将他删除掉。
  •   扭曲矫正,我这里的扭曲矫正,是片面的,真正是很难有较好的效果,对于不同的验证码,有不同的特点,有一些验证码的产生,就有这样的特点,角落处,有阴影,这使得字符有扭曲,根据这里,来实现不同程度的扭曲矫正。
  • 切割图像,将每个字符切割下来,这里也是相对的了,粘连较严重即将影响字符的正确。
  • 二进制化图像,是字符的地方是0,没有的地方是1(这里相反没有问题)。生成训练集。
  • 训练模型制作,字符,二进制的像素点,joblib持久化保存,将模型保存到本地,进行预测,速度更快。
  • 通过随机森林算法将样本数据训练。

2、测试:

  •   测试的步骤和学习的步骤类似。
  • 通过训练模型得到的分类结果计算正确率。

最后识别率在100%

时间: 2024-08-06 02:09:34

图像处理与机器学习(验证码的识别)的相关文章

常用验证码的识别方法

此文已由作者杨杰授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 全自动区分计算机和人类的图灵测试(Completely Automated Public Turing test to tell Computers and Humans Apart,简称CAPTCHA),俗称验证码,是一种区分用户是计算机和人的公共全自动程序.验证码的主要目的是强制人机交互来抵御机器自动化攻击,为了确保服务器系统的稳定和用户信息的安全,越来越多的网站采用了验证码技术.图片验证码是目前最常用

Atitit 图像处理--图像分类 模式识别 肤色检测识别原理 与attilax的实践总结

Atitit 图像处理--图像分类 模式识别 肤色检测识别原理 与attilax的实践总结 1.1. 五中滤镜的分别效果..1 1.2. 基于肤色的图片分类1 1.3. 性能提升2 1.4. --code2 1.1. 五中滤镜的分别效果.. /AtiPlatf_cms/src/com/attilax/clr/skinfltAll.java 1.2. 基于肤色的图片分类 /AtiPlatf_cms/src/com/attilax/clr/moveBySkinLow.java 生成所有图片的肤色百分

C#简单验证码码识别

写在最前 最近做一个小玩意需要识别验证码,之前从来没接触过验证码识别这块,这可难到了我.所以,只有三番五次的麻烦度娘帮我找找验证码识别这块的资料.所幸,许多前辈分享的博文帮到了我.最终,完美的把问题解决. 我要识别的验证码属于非常简单的一种,如下图: 1.图片灰度化(把彩色的验证码图片转换成灰色图片) for(int i = 0; i < bmp.Width; i++) { for(int j = 0; j < bmp.Height; j++) { Color color = bmp.GetP

验证码的识别 -01 -图形验证码的识别

验证码的识别 -01 -图形验证码的识别 1. 准备工作 1. 下载安装 tesseract 下载地址 下载完成后双击,安装程序, 可以勾选Additional language data(download)选项来安装 OCR 识别支持的语言包,这样 OCR 便可以识别多国语言 将tesseract 配置环境变量 将tesseract的语言包添加到环境变量中,在环境变量中新建一个系统变量,变量名称为TESSDATA_PREFIX,tessdata是放置语言包的文件夹,一般在你安装tesserac

Python3网络爬虫实战-45、微博宫格验证码的识别

本节我们来介绍一下新浪微博宫格验证码的识别,此验证码是一种新型交互式验证码,每个宫格之间会有一条指示连线,指示了我们应该的滑动轨迹,我们需要按照滑动轨迹依次从起始宫格一直滑动到终止宫格才可以完成验证,如图 8-24 所示: 图 8-24 验证码示例 鼠标滑动后的轨迹会以×××的连线来标识,如图 8-25 所示: 图 8-25 滑动过程 我们可以访问新浪微博移动版登录页面就可以看到如上验证码,链接为:https://passport.weibo.cn/signin/login,当然也不是每次都会出

Python3网络爬虫实战-44、点触点选验证码的识别

上一节我们实现了极验验证码的识别,但是除了极验其实还有另一种常见的且应用广泛的验证码,比较有代表性的就是点触验证码. 可能你对这个名字比较陌生,但是肯定见过类似的验证码,比如 12306,这就是一种典型的点触验证码,如图 8-18 所示: 图 8-18 12306 验证码 我们需要直接点击图中符合要求的图,如果所有答案均正确才会验证成功,如果有一个答案错误,验证就会失败,这种验证码就可以称之为点触验证码.学习过程中有不懂的可以加入我们的学习交流秋秋圈784中间758后面214,与你分享Pytho

机器学习-SVM-手写识别问题

机器学习-SVM-手写识别问题 这里我们解决的还是之前用KNN曾经解决过的手写识别问题(https://www.cnblogs.com/jiading/p/11622019.html),但相比于KNN,SVM好的地方在于一旦我们的模型训练完成,我们就可以得到一个确定的决策超平面,当然这个超平面的w是用所有的支持向量来描述的,这就表示我们发布模型的时候只需要包括所有的支持向量在内就可以了,剩下所有的向量都可以舍弃,和每次都需要所有向量的KNN相比,这就大大减小了模型的大小. 注意,这里举的是一个二

简单验证码的识别

验证码图片均取自于国内某知名信息安全网站,通过图像处理.模板对比识别等步骤,实现了该类简单验证码图片的识别功能.同时对程序实现了可视化界面,并集成了(验证码)图片下载.(灰度值)门限手动调节等扩展功能.代码存在github,传送门请戳我. 一.程序内容及原理 本程序以Python实现,主要借助了PIL(Python Image Library,实现读取图片.读取灰度值等图像处理相关功能)及tkinter(实现界面设计相关功能)两个库.图像处理及识别的主程序的总体流程如下:导入(读取)验证码图片,

验证码图片识别相关博客收集

JAVA使用Tess4J进行ocr识别 Java识别验证码和图像处理 java验证码识别博客:https://blog.csdn.net/problc/article/details/5800093 github地址:https://github.com/isee15/captcha-ocr 原文地址:https://www.cnblogs.com/liran123/p/10327218.html