Python使用数学形态学腐蚀运算删除验证码图片中的干扰噪点和线条
好消息:“Python小屋”编程比赛正式开始
推荐图书:
《Python可以这样学》,ISBN:9787302456469,董付国,清华大学出版社,第9次印刷
图书详情(京东):
董付国老师17本Python系列图书均提供配套教学资源。
=======================
问题描述:
给定一个验证码图片,其中包含干扰噪点和线条,有效验证码不容易识别,要求编写程序删除其中的干扰噪点和线条。
技术原理:
遍历图像中所有像素,如果该像素的上、下、左、右像素有白色背景,说明该像素为边缘像素,将其设置为白色。这样处理的话,字符内部的像素保持不变,边缘像素变为背景,单个噪点像素和宽度为2的线条被消除。
处理后的图片中字符的边缘会被“腐蚀”,向内收缩,如果需要的话可以对处理的图片再进行一次膨胀运算,尽力还原字符。
测试图片:
Python+tkinter实现验证码输入和切换
Python简易验证码生成程序
处理后的效果:
参考代码:
温馨提示:
关注微信公众号“Python小屋”,在公众号后台发送消息“大事记”可以查看董付国老师与Python有关的重要事件;发送消息“教材”可以查看董付国老师出版的Python系列教材(已累计印刷超过100次)的适用专业详情;发送消息“历史文章”可以查看董付国老师推送的超过1000篇原创技术文章;发送消息“会议”或“培训”可以查看近期董付国老师的培训安排;发送消息“微课”可以查看董付国老师免费分享的超过500节Python微课视频;发送消息“课件”可以查看董付国老师免费分享的Python教学资源;发送消息“小屋刷题”可以下载“Python小屋刷题神器”,免费练习1139道客观题和112道编程题,题库持续更新;发送消息“编程比赛”了解Python小屋编程大赛详情。
Python使用数学形态学腐蚀运算删除验证码图片中的干扰噪点和线条相关推荐
- python使用正则验证电子邮件_Python使用数学形态学腐蚀运算删除验证码图片中的干扰噪点和线条...
近期会议:10月30-11月1日 全国高校Python课程高级研修班(苏州) 好消息:"Python小屋"编程比赛正式开始 推荐图书:<Python可以这样学>,ISB ...
- 【图像数学形态学处理】膨胀与腐蚀运算
文章目录 膨胀运算(dilation) 定义 应用说明 腐蚀运算(erosion) 定义 应用说明 图像形态学二值化处理运算实现 二值图像的逻辑运算 形态学运算 膨胀与腐蚀运算的编程实现 腐蚀运算 膨 ...
- Python使用数学形态学方法处理图像
本文要点在于Python扩展库numpy.scipy.matplotlib的用法和数学形态学中开.闭.腐蚀.膨胀等运算的实现. >>> import numpy as np > ...
- python视觉识别定位_机器视觉以及验证码识别
机器视觉 从 Google 的无人驾驶汽车到可以识别假钞的自动售卖机,机器视觉一直都是一个应用广 泛且具有深远的影响和雄伟的愿景的领域. 我们将重点介绍机器视觉的一个分支:文字识别,介绍如何用一些 P ...
- python视觉识别字_机器视觉以及验证码识别
机器视觉 从 Google 的无人驾驶汽车到可以识别假钞的自动售卖机,机器视觉一直都是一个应用广 泛且具有深远的影响和雄伟的愿景的领域. 我们将重点介绍机器视觉的一个分支:文字识别,介绍如何用一些 P ...
- python数据类型和数据运算
数字 整型 包括正整数和负整数,和数学的表示方法一样.如:1.100.8008.-12等. 浮点型 浮点数字也称为小数,如果按照科学计数法表示时,小数点的位置是可变的.如:1.23x109==12.3 ...
- Python使用Pillow(PIL)库实现验证码图片
Python使用Pillow(PIL)库实现验证码图片 Pillow库有很多用途,本文使用Pillow来生成随机的验证码图片. Pillow的用法参考:https://blog.csdn.net/we ...
- 数字图像处理实验(七)| 形态学图像处理{生成结构元素strel、腐蚀运算imerode、膨胀运算imdilate、开运算imopen、闭运算imclose}(附代码和实验截图、汉字视力表项目、总结)
文章目录 一.实验目的 二.实验仪器 三.实验原理 1. 结构元素: 2. 腐蚀运算: 3. 膨胀运算: 4. 开运算: 5. 闭运算: 四.实验内容: 1. 形态学图像处理用于图像边界提取 2.数学 ...
- Python生成随机五位数——模仿手机验证码
使用Python生成随机的五位手机验证码. # -*- coding:utf-8 -*-#生成五位随机数,模仿手机验证码#导入random库,可以生成随机数 import randomdef ran( ...
最新文章
- c++中介者模式mediator
- 华为p50预计售价鸿蒙是什么,华为P50pro预计售价多少 华为P50Pro参数配置
- linux刷除U盘grub,删除linux系统出现grub rescue
- ThreadPoolExecutor 中的workerDone(this); 为什么会时不时的就会在这个地方停下来???
- 快速排序——三种划分方式
- 2d游戏中关于碰撞以及渲染层级关系
- python将h264文件视频转为mp4格式
- 查看计算机安装程序版本,Product Key Explorer(程序密钥显示工具)
- win10下安装Vm15添加虚拟机的总结
- 详解使用SSH远程连接Ubuntu服务器系统
- Burst(突发)信号
- Git HEAD指针
- Programming Ruby 读书笔记(六)
- 【hadoop权威指南第四版】第七章MR的类型与格式【笔记+代码】
- 图的度序列:Havel定理
- 微信小程序动画简单入门
- k8s开启IPVS模式
- 卷毛机器人抢大龙视频_世界第一机器人卷毛梦回S2 钩子抢大龙 直言钻一像人机...
- 手机麦克风结构原理图_让你一次看懂手机芯片的工作原理
- 自己写的QQ美女找茬外挂
热门文章
- Java使用正则表达式抓取日期和访问量
- php中global什么意思,php中global与$GLOBAL的用法及区别(转载)
- qt获取窗口的右上角位置_智能座舱QT应用实例 -- Mode/View
- mysql 无符号 负数_mysql下有符号数和无符号数的相关问题
- oracle odi 资料档案库访问期间出现未分类的异常错误,oracle学习_基本语法
- android 无线接口 泛收,Android下的Java之interface接口泛型 动态获取泛型的类型
- eggjs增删改查MySQL_egg-sequelize 实现 增删改查
- 每个做DBA的孩纸都是上辈子被drop的db
- IBM小型机没有显卡,用串口登录需要修改tty,加clocal参数
- 软件测试c s系统和b s,对C/S与B/S架构的产品进行系统测试,有哪些不同点与相同点?...