使用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提示[Errno 32]Broken pipe导致线程crash错误解决方法
Nov 19 Python
使用python实现省市三级菜单效果
Jan 20 Python
python安装PIL模块时Unable to find vcvarsall.bat错误的解决方法
Sep 19 Python
Python解决八皇后问题示例
Apr 22 Python
Python基于多线程实现抓取数据存入数据库的方法
Jun 22 Python
教你利用Python玩转histogram直方图的五种方法
Jul 30 Python
Python对CSV、Excel、txt、dat文件的处理
Sep 18 Python
python3使用matplotlib绘制条形图
Mar 25 Python
详解python中*号的用法
Oct 21 Python
Django通过dwebsocket实现websocket的例子
Nov 15 Python
python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例
Feb 27 Python
Python 如何调试程序崩溃错误
Aug 03 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
关于文本留言本的分页代码
2006/10/09 PHP
php抓取页面与代码解析 推荐
2010/07/23 PHP
PHP中extract()函数的妙用分析
2012/07/11 PHP
PHP实现的MongoDB数据库操作类分享
2014/05/12 PHP
ThinkPHP框架实现session跨域问题的解决方法
2014/07/01 PHP
php5.6.x到php7.0.x特性小结
2019/08/17 PHP
初试jQuery EasyUI 使用介绍
2010/04/01 Javascript
AlertBox 弹出层信息提示框效果实现步骤
2010/10/11 Javascript
JS 实现Json查询的方法实例
2013/04/12 Javascript
php实例分享之实现显示网站运行时间
2014/05/20 Javascript
JavaScript运算符小结
2015/06/03 Javascript
javascript伸缩菜单栏实现代码分享
2015/11/12 Javascript
jquery zTree异步加载、模糊搜索简单实例分享
2016/03/24 Javascript
JS实现探测网站链接的方法【测试可用】
2016/11/08 Javascript
js控制台输出的方法(详解)
2016/11/26 Javascript
Javascrip实现文字跳动特效
2016/11/27 Javascript
详解Vue自定义过滤器的实现
2017/01/10 Javascript
underscore之Chaining_动力节点Java学院整理
2017/07/10 Javascript
Vue.js进阶知识点总结
2018/04/01 Javascript
ES6 系列之 Generator 的自动执行的方法示例
2018/10/19 Javascript
es6 symbol的实现方法示例
2019/04/02 Javascript
vue实现移动端返回顶部
2020/10/12 Javascript
Python中正则表达式的详细教程
2015/04/30 Python
用Python实现一个简单的多线程TCP服务器的教程
2015/05/05 Python
Python计算一个文件里字数的方法
2015/06/15 Python
在Django框架中设置语言偏好的教程
2015/07/27 Python
Python实现字符串格式化的方法小结
2017/02/20 Python
Python各类图像库的图片读写方式总结(推荐)
2018/02/23 Python
TensorFLow 不同大小图片的TFrecords存取实例
2020/01/20 Python
Tensorflow 卷积的梯度反向传播过程
2020/02/10 Python
python新手学习使用库
2020/06/11 Python
解决python的空格和tab混淆而报错的问题
2021/02/26 Python
英国音乐设备和乐器商店:Gear4music
2017/10/16 全球购物
《湘夫人》教学反思
2014/02/21 职场文书
我们的节日国庆活动方案
2014/08/19 职场文书
施工员岗位职责范本
2015/04/11 职场文书