使用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 相关文章推荐
tensorflow入门之训练简单的神经网络方法
Feb 26 Python
Python中的二维数组实例(list与numpy.array)
Apr 13 Python
使用Python机器学习降低静态日志噪声
Sep 29 Python
Python实现的调用C语言函数功能简单实例
Mar 13 Python
详解Python传入参数的几种方法
May 16 Python
对Django外键关系的描述
Jul 26 Python
Python-jenkins模块之folder相关操作介绍
May 12 Python
Python基于time模块表示时间常用方法
Jun 18 Python
python支持多继承吗
Jun 19 Python
记录一下scrapy中settings的一些配置小结
Sep 28 Python
python UDF 实现对csv批量md5加密操作
Jan 01 Python
Python办公自动化之教你如何用Python将任意文件转为PDF格式
Jun 28 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制作简单分页(从数据库读取记录)的方法详解
2013/05/04 PHP
php跨站攻击实例分析
2014/10/28 PHP
PHP ajax 异步执行不等待执行结果的处理方法
2015/05/27 PHP
PHP实现的AES 128位加密算法示例
2019/09/16 PHP
document.all还是document.getElementsByName?
2006/07/21 Javascript
createElement动态创建HTML对象脚本代码
2008/11/24 Javascript
jQuery实现提交按钮点击后变成正在处理字样并禁止点击的方法
2015/03/24 Javascript
JS+HTML5手机开发之滚动和惯性缓动实现方法分析
2016/06/12 Javascript
jQuery对checkbox 复选框的全选全不选反选的操作
2016/08/09 Javascript
卸载安装Node.js与npm过程详解
2016/08/15 Javascript
vue模板语法-插值详解
2017/03/06 Javascript
Angular使用动态加载组件方法实现Dialog的示例
2018/05/11 Javascript
vue+elementUI 实现内容区域高度自适应的示例
2020/09/26 Javascript
Taro小程序自定义顶部导航栏功能的实现
2020/12/17 Javascript
python基础教程之缩进介绍
2014/08/29 Python
Python2/3中urllib库的一些常见用法
2017/12/19 Python
django请求返回不同的类型图片json,xml,html的实例
2018/05/22 Python
Django跨域请求CSRF的方法示例
2018/11/11 Python
python 实现在tkinter中动态显示label图片的方法
2019/06/13 Python
Python values()与itervalues()的用法详解
2019/11/27 Python
Python networkx包的实现
2020/02/14 Python
Python3运算符常见用法分析
2020/02/14 Python
Python with语句用法原理详解
2020/07/03 Python
Django数据库迁移常见使用方法
2020/11/12 Python
基于Python的接口自动化读写excel文件的方法
2021/01/15 Python
jupyter 添加不同内核的操作
2021/02/06 Python
css3实现椭圆轨迹旋转的示例代码
2018/10/29 HTML / CSS
eVitamins日本:在线购买折扣维生素、补品和草药
2019/04/04 全球购物
Java面试题:为什么要用Java
2012/05/11 面试题
值传递还是引用传递
2015/02/08 面试题
内衣营销方案
2014/03/15 职场文书
机关出纳岗位职责
2014/04/03 职场文书
美容院店长岗位职责
2014/04/08 职场文书
小学教师自我评价
2015/03/04 职场文书
详解JAVA中的OPTIONAL
2021/06/14 Java/Android
MySQL修炼之联结与集合浅析
2021/10/05 MySQL