图片识别之验证码识别

2023-05-16

许多网站在进行某些操作前会要求输入验证码以此来抵御爬虫和攻击。此篇主要讲述如何通过代码来识别一些常见的验证码。以此探究图片识别的过程以及如何避免生成容易被识别的验证码。

理论

图片识别的过程

  1. 取样本

  2. 清洗区分样本

  3. 提取样本特征

  4. 提取目标的特征与样本进行对比

操作过程

Java有丰富的图片处理类,本次操作使用java语言。
一、取目标网站的验证码样本。在web页面中查看验证码请求的地址。通过http请求批量获取验证码并保存在本地。
在这里插入图片描述
二、区分样本。对每张验证码图片进行人工识别区分,重命名为该图片的验证码。
在这里插入图片描述
三、清洗切割样本,提取样本特征。图片识别需要尽可能细地区分出特征点。我们观察上图的验证码图片可以发现多个信息:
● 验证码的背景存在着许多干扰线。

● 每个数字分明,所占的位置几乎是均等的。

● 验证码的数字颜色比较深,干扰因素颜色较浅。

我们可以尝试通过颜色的深浅去除干扰因素。先通过灰度处理,将验证码中颜色较浅的点置换成白色,颜色较深的点置换成黑色。
在这里插入图片描述
通过改变灰度阈值grayValue不断尝试去除干扰点。最后得到干净的验证码。
在这里插入图片描述
接下来通过识别图片中的黑色点,使用下面的trainData()方法。

沿着黑色点进行矩形切割,得到单个数字的特征样本。
在这里插入图片描述
在这里插入图片描述

得到的验证码特征样本训练集合如下:
在这里插入图片描述
四、提取目标验证码的特征,与训练集合做对比,识别目标验证码图片

通过上面的三步,我们已经得到了一组样本特征,接下来只需要把将目标验证码同样执行上面的3步。把提取出来的目标验证码特征与样本特征作对比。如果双方绝大部分像素点的颜色相同,则可认为目标验证码与样本内容一致。取样本的文件名,即可等到目标验证的内容了。以下为对比识别的代码。
在这里插入图片描述

总结

通过上面的四部操作,我们已经能够识别出一些网站的验证码了。上面使用的方法是通过颜色的深浅,去除干扰素,再提取样本特征进行对比。面对其他的一些验证码需要我们通过观察掌握图片的规律,灵活地使用其他的算法来识别去除干扰素,提取出样本特征。

同样地,在生成验证码的过程中,我们需要避免生成易于去除的干扰素。各个验证码之间在不影响人工识别的情况下尽可能粘连起来,避免被切割分类。

在这里插入图片描述
文章来自公众号:睿江云计算

睿江云官网链接:https://www.eflycloud.com/home?from=RJ0024

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

图片识别之验证码识别 的相关文章

  • C++20视图(ranges)探究

    出现的原因 我们在容器进行数据的处理时 xff0c 不免的会修改容器本身 xff0c 此时我们要常常创建一个原容器一摸一样的拷贝来维护原先的状态 xff0c 这样不仅浪费了空间 xff0c 并且会引起代码的不直观 因此范围库的引入为过滤和处
  • C语言例题 4/100

    题目 xff1a 输入某年某月某日 xff0c 判断这一天是这一年的第几天 xff1f include lt stdio h gt int main int day month year sum leap printf 34 n请输入年 月
  • mac下搭建PHP开发环境

    1 因为mac下自带apache和php 直接打开命令行即可 首先切换到root用户 sudo i 接着查看80端口是否被暂用 lsof 查看apache 版本 httpd v 开启apache apachectl start 重启apac
  • opencv光流(密集光流+稀疏光流) cv.calcOpticalFlowPyrLK & cv2.calcOpticalFlowFarneback python与c++实现

    密集光流 cv calcOpticalFlowFarneback 类型算法相关论文密集光流Gunnar Farneback算法Two Frame Motion Estimation Based on Polynomial Expansion
  • 【求解答】pyqt5 主界面和控制算法运行的多进程

    求解答 pyqt5 主界面和控制算法运行的多进程 有个特别头大的问题 xff0c 希望在CSDN里面能得到相关大佬的解答 呜呜呜 xff0c 无助 情况说明 xff1a 我使用了pyqt5开发深度学习算法的应用程序 xff0c 主进程是控制
  • 9 在思科路由器上配置IS-IS路由选择

  • 数码管动态静态显示原理

    8段发光二极管连接有两种结构 xff1a 共阴极和共阳极 8位数码管字段码为8位 xff0c 从高位到低位的顺序依次是dp g f e d c b a 例如共阴数码管数字0的字段码为00111111B xff08 3FH xff09 共阴极
  • Linux系统安装FFmpeg以及依赖库

    最近这两周都在搞FFmpeg的安装 xff0c 先是在windows平台上做了一个rtsp音视频流采集程序 但总监必须要我运行在Linux 平台上 xff0c 没办法 xff0c 就这样开始了我的噩梦 小白一个 xff0c 大神勿喷 附件中
  • armbian换源

    先科普一下源格式 deb http mirrors aliyun com ubuntu ports xenial main 源类型 地址 系统版本 包范围 src源 没看源码需求可以注释以加快速度 一般换源直接更换地址即可 系统版本要和自己
  • c++报错合集

    c 43 43 报错合集 未定义标识符mkdir不存在从string到const char 的转换函数C4996 39 fopen 39 This function or variable may be unsafe Consider us
  • 直方图中最大矩形面积

    原文地址 xff1a http www geeksforgeeks org largest rectangle under histogram 注意 xff1a 本文并未对原文完整翻译 xff0c 而是结合原文并根据本人理解写出 xff0c
  • 常用的第三方api汇总[获取天气]

    这里mark一下自己经常用第三方api xff0c 非商用 xff0c 适合自己学习测试使用 例如js里的fetch xff0c 不要恶意访问 xff0c 后续会慢慢补充 1 随机用户 GET请求 JSON格式 https api rand
  • 私有服务器gitlab15.1.1-ce.0.el7版本添加新用户

    1 在menu下找到admin 2 进入admin后 xff0c 点击new user 3 进入new user之后 xff0c 以下三项必填 xff0c 其中第二项不能为中文 4 之后下划 xff0c 点击creature user 系统
  • Django 项目初始化

    文章目录 初始化流程1 环境准备1 1 制定规范1 2 建立虚拟环境1 3 安装 virtualenv1 4 激活虚拟环境1 5 退出虚拟环境1 6 安装 Django 2 创建项目 project3 创建应用 application 初始
  • 优酷路由宝 OpenWrt 刷机

    优酷路由宝 OpenWrt 刷机 资源列表 优酷土豆路由宝已获取 root 权限的版本固件 下载 https biaowong lanzouu com iChJt031yeud 密码 e6otBreed 刷机工具 下载 https biao
  • 谈一下两次CSP认证从180分到380分的感想

    最近联系我的小可爱们比较多 xff0c 我用qq建了一个ccf csp考试交流群 xff0c 群号673612216 xff0c 如果感觉有用可以加一下哦 欢迎访问我的CCF认证考试题解目录哦 https blog csdn net ric
  • Deepin Linux v20+安装Calibre官方最新版的方法

    电子书阅读 管理 编辑神器 xff0c 官方提供了非常简单高效的安装脚本 xff0c 下面一句指令就可以快速安装 xff0c 非常方便 xff0c 大家可以不必安装商店里面的版本 xff0c 直接安装最新版的 安装命令 xff1a sudo
  • 硬盘安装Debian与Xp双系统

    发个debian 6 0的简单安装教程 2009年10月写了个 debian lenny的简单安装教程 xff0c 前段时间一直盼望的6 0 squeeze终于正式发布了 xff0c 所以在lenny的教程基础上进行了修改 xff0c 以满
  • c语言链表及其基本操作

    链表及其基本操作 文章目录 链表及其基本操作 一 链表是什么 xff1f 二 链表是如何实现的1 创建链表2 输出链表 三 基本操作 xff08 增删改查插 xff09 1 查找结点2 删除结点3 插入结点4 清空结点 做为一名 新生蒟蒻来
  • 湖南大学第十六届程序设计竞赛

    湖南大学第十六届程序设计竞赛 https ac nowcoder com acm contest 18196 description D 遇到这种题 xff0c 其实可以去大胆点找规律 正解是对于排位的期望 xff0c 我们只需要在意排的位

随机推荐

  • VS2010中CString Format出错

    VS2010中 Format 用法 xff1a 我在项目中需要实现一个字符串的转化 xff0c 代码如下 xff1a CString mess int x y x 61 640 y 61 480 mess Format 34 当前为 xff
  • 数据库MySQL安装方法:官网下载安装、国内镜像源安装

    一 官网下载安装 xff08 MySQL Download MySQL Yum Repository xff09 下载rpm包 xff0c 上传到虚拟机上 xff08 rz命令 xff09 root 64 localhost ls 在官网下
  • 输出函数print的用法

    print函数的作用 xff1a 可以将想要展示的内容输出在d IDLE上或者输出在文件中 print xff08 xff09 函数的使用 xff1a 1 print xff08 xff09 函数输出的内容可以是数字 2 print xff
  • 2021“MINIEYE杯”中国大学生算法设计超级联赛

    2021 MINIEYE杯 中国大学生算法设计超级联赛 1006 Given a sequence of integers of length n find the shortest consecutive subsequence witc
  • ac自动机

    https blog csdn net lleozhang article details 82782723 https www cnblogs com vongang archive 2012 07 24 2606494 html htt
  • 基环树 最大独立集

    基环树 xff0c 也是环套树 xff0c 简单地讲就是树上在加一条边 它形如一个环 xff0c 环上每个点都有一棵子树的形式 因此 xff0c 对基环树的处理大部分就是对树处理和对环处理 显然 xff0c 难度在于后者 在基环树中 xff
  • 有向图无向图找环

    https codeforces com contest 1607 problem F 练习题 xff08 有向图 题解 xff1a https www cnblogs com handwer p 15506706 html E8 B5 B
  • 《机器人知识结构图》思维导图,探索人工智能领域

    随着时代快速发展 xff0c 经济快速进步的趋势 xff0c 人工智能领域越来越被重视 xff0c 它是一门边缘学科 xff0c 属于自然科学和社会科学的交叉界限 实际应用的课程非常多 他的研究范畴又包括了自然语言处理 xff0c 知识表现
  • 微信小程序的两种视频录制方式

    曾有小伙伴询问小编能不能在小程序内实现视频录制 xff0c 今天小编就来给大家分享小程序视频录制两种方式 方法一 wx chooseVideo xff0c 这个api微信会在下方弹出选择视频和拍摄的两种选项 xff0c 因为这次主要是讲拍摄
  • 如何使用app原生上传替代uniapp的uploadfile接口

    uniapp简介 uniapp是近两年来比较火的号称开发者编写一套代码 xff0c 可发布到iOS Android Web xff08 响应式 xff09 以及各种小程序的一个平台 xff0c 它提供了各种丰富的API文档让开发者快速的完成
  • 如何用electron高度自定义制一个系统菜单栏?

    背景 最近在做一个实时聊天的PC客户端 xff0c 遇到这样一个任务 xff0c 在客户端接收到其他用户消息的时候要闪烁系统托盘图标 xff0c 并且在鼠标滑到系统托盘的时候显示未读消息的菜单栏 xff08 对 xff0c 就是类似QQ的消
  • OPENVIDU实现网络质量检测统计

    1 前言 在WebRTC中 xff0c 我们需要对当前的音视频情况进行监控 xff0c 便于对音视频质量有一个了解 xff0c 同时可以用来分析定位音视频卡顿模糊等问题 WebRTC提供了一个标准的解决方案 xff1a 标准详情 基于此标准
  • OPENVIDU实现同一用户同时发布多个流媒体

    1 前言 OPENVIDU这个库暂时是不支持在同一个会议室里面 xff0c 同一个用户同时发布多个媒体流的 但在实际工作中有这种需要 xff0c 比如用户A既要发布摄像机媒体流 xff0c 同时也要发布屏幕共享媒体流 下面介绍一种简单的方法
  • Softmax回归模型

    用到的数学概念补充 凸集 xff0c 凸函数 xff0c 黑塞矩阵 简介 节中 xff0c 我们介绍Softmax回归模型 xff0c 该模型是logistic回归模型在多分类问题上的推广 xff0c 在多分类问题中 xff0c 类标签 可
  • Ubuntu记录用户IP访问操作信息工具

    1 用脚本时刻记录用户IP访问操作信息工具 xff0c 用shell脚本去记录 2 每隔一天存放用户信息 xff0c 记录操作时间 xff0c 固定地方存放 脚本如下 在服务器环境变量中加入如下代码 vi etc profile bin b
  • webrtc系列之-像老鼠一样打洞

    众所周知 xff0c 本光头刚涉猎音视频不久 xff0c 所以很多东西都是边学边做的 xff0c 有说得不对的地方 xff0c 请各位多包涵 说穿透之前 xff0c 我们首先需要明白关于WEBRTC的一些概念 xff0c WEBRTC它是一
  • PHP的三种简单实用的传参方式

    首先声明 xff0c 本干货的观点仅代表个人观点 xff0c 拿出来和大家唠叨唠叨 最近在写代码的时候 xff0c 发现了一个有趣的事情 就是我创建了一个新的函数 xff0c 但是因为各种需求 xff0c 各种功能设计的原因 xff0c 函
  • apache rewrite(重定向)

    很多时候 xff0c 由于项目变更的需要 xff0c 我们会将一个网站的域名变更为另外一个域名 xff0c 又或者是一个地址转变为另外一个地址 而在项目里进行跳转并不是一个明智的选择 xff0c 这个时候我们就可以使用到apache的mod
  • 用nginx搭建http透明代理

    背景 代理我们经常听 xff0c 在技术层面我们谈论的代理往往是非透明代理 xff0c 那么既然有非透明代理那就存在有透明代理 我们先看看什么是透明代理 xff0c 引用百度百科的一句话可以描述明白 透明代理的意思是客户端根本不需要知道有代
  • 图片识别之验证码识别

    许多网站在进行某些操作前会要求输入验证码以此来抵御爬虫和攻击 此篇主要讲述如何通过代码来识别一些常见的验证码 以此探究图片识别的过程以及如何避免生成容易被识别的验证码 理论 图片识别的过程 取样本 清洗区分样本 提取样本特征 提取目标的特征