使用python 对验证码图片进行降噪处理


Posted in Python onDecember 18, 2019

首先贴一张验证码上来做案例:

使用python 对验证码图片进行降噪处理

第一步先通过二值化处理把干扰线去掉:

from PIL import Image
 
# 二值化处理
def two_value():
  for i in range(1,5):
    # 打开文件夹中的图片
    image=Image.open('./Img/'+str(i)+'.jpg')
    # 灰度图
    lim=image.convert('L')
    # 灰度阈值设为165,低于这个值的点全部填白色
    threshold=165
    table=[]
    
    for j in range(256):
      if j<threshold:
        table.append(0)
      else:
        table.append(1)
 
    bim=lim.point(table,'1')
    bim.save('./Img2/'+str(i)+'.jpg')
 
two_value()

运行结果图如下:

使用python 对验证码图片进行降噪处理

然后对黑白图片进行降噪,去掉那些单独的黑色像素点:

from PIL import Image
 
# 去除干扰线
im = Image.open('./Img2/1.jpg')
# 图像二值化
data = im.getdata()
w,h = im.size
black_point = 0
 
for x in range(1,w-1):
  for y in range(1,h-1):
    mid_pixel = data[w*y+x] # 中央像素点像素值
    if mid_pixel <50: # 找出上下左右四个方向像素点像素值
      top_pixel = data[w*(y-1)+x]
      left_pixel = data[w*y+(x-1)]
      down_pixel = data[w*(y+1)+x]
      right_pixel = data[w*y+(x+1)]
 
      # 判断上下左右的黑色像素点总个数
      if top_pixel <10:
        black_point += 1
      if left_pixel <10:
        black_point += 1
      if down_pixel <10:
        black_point += 1
      if right_pixel <10:
        black_point += 1
      if black_point <1:
        im.putpixel((x,y),255)
      # print(black_point)
      black_point = 0
 
im.save('xxxx.jpg')

运行结果如下图所示:

使用python 对验证码图片进行降噪处理

最后对边框上附着的黑色像素点进行消除:

from PIL import Image
 
# 去除干扰线
im = Image.open('./Img2/1.jpg')
# 图像二值化
data = im.getdata()
w,h = im.size
black_point = 0
 
for x in range(1,w-1):
  for y in range(1,h-1):
    if x<2 or y<2 :
      im.putpixel((x-1, y-1), 255)
    if x>w-3 or y>h-3:
      im.putpixel((x+1 , y+1 ), 255)
 
im.save('xxx.jpg')

运行结果:

使用python 对验证码图片进行降噪处理

以上这篇使用python 对验证码图片进行降噪处理就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python专用方法与迭代机制实例分析
Sep 15 Python
Python学习思维导图(必看篇)
Jun 26 Python
Python读取txt文件数据的方法(用于接口自动化参数化数据)
Jun 27 Python
PyQt5实现五子棋游戏(人机对弈)
Mar 24 Python
使用Python制作表情包实现换脸功能
Jul 19 Python
pycharm配置当鼠标悬停时快速提示方法参数
Jul 31 Python
从训练好的tensorflow模型中打印训练变量实例
Jan 20 Python
django 链接多个数据库 并使用原生sql实现
Mar 28 Python
Python打印特殊符号及对应编码解析
May 07 Python
python3.6中anaconda安装sklearn踩坑实录
Jul 28 Python
python爬取音频下载的示例代码
Oct 19 Python
Python编写冷笑话生成器
Apr 20 Python
如何使用Python多线程测试并发漏洞
Dec 18 #Python
Python实现图像去噪方式(中值去噪和均值去噪)
Dec 18 #Python
python 中值滤波,椒盐去噪,图片增强实例
Dec 18 #Python
Django中使用MySQL5.5的教程
Dec 18 #Python
Python hashlib加密模块常用方法解析
Dec 18 #Python
Python实现中值滤波去噪方式
Dec 18 #Python
详解Python中字符串前“b”,“r”,“u”,“f”的作用
Dec 18 #Python
You might like
php IP及IP段进行访问限制的代码
2008/12/17 PHP
奇怪的PHP引用效率问题分析
2012/03/23 PHP
zf框架的session会话周期及次数限制使用示例
2014/03/13 PHP
php计算2个日期的差值函数分享
2015/02/02 PHP
Twig模板引擎用法入门教程
2016/01/20 PHP
Zend Framework处理Json数据方法详解
2016/12/09 PHP
php文件包含目录配置open_basedir的使用与性能详解
2017/04/03 PHP
如何将一个String和多个String值进行比较思路分析
2013/04/22 Javascript
密码框显示提示文字jquery示例
2013/08/29 Javascript
框架页面高度自动刷新的Javascript脚本
2013/11/01 Javascript
javascript的回调函数应用示例
2014/02/20 Javascript
动态加载iframe时get请求传递中文参数乱码解决方法
2014/05/07 Javascript
jQuery子窗体取得父窗体元素的方法
2015/05/11 Javascript
Javascript编写2048小游戏
2015/07/07 Javascript
BootStrap日期控件在模态框中选择时间下拉菜单无效的原因及解决办法(火狐下不能点击)
2016/08/18 Javascript
easyUI实现(alert)提示框自动关闭的实例代码
2016/11/07 Javascript
原生js实现弹出层效果
2017/01/20 Javascript
NodeJS 实现手机短信验证模块阿里大于功能
2017/06/19 NodeJs
nodejs socket服务端和客户端简单通信功能
2017/09/14 NodeJs
JS中的事件委托实例浅析
2018/03/22 Javascript
小程序中设置缓存过期的实现方法
2020/01/14 Javascript
JavaScript JSON使用原理及注意事项
2020/07/30 Javascript
[38:44]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第二局
2016/02/25 DOTA
Python strip lstrip rstrip使用方法
2008/09/06 Python
Python  Django 母版和继承解析
2019/08/09 Python
linux 下selenium chrome使用详解
2020/04/02 Python
基于tf.shape(tensor)和tensor.shape()的区别说明
2020/06/30 Python
如何在scrapy中捕获并处理各种异常
2020/09/28 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
2021/01/29 Python
浅谈关于html5中图片抛物线运动的一些心得
2018/01/09 HTML / CSS
日本最新流行服饰网购:Nissen
2016/07/24 全球购物
THE OUTNET美国官网:国际设计师品牌折扣网站
2017/03/07 全球购物
汽车运用工程毕业生自荐信
2013/10/29 职场文书
信息总监管理职责范本
2014/03/08 职场文书
小学远程教育工作总结
2015/08/13 职场文书
apache基于端口创建虚拟主机的示例
2021/04/24 Servers