使用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中的类与对象之描述符详解
Mar 27 Python
利用Python将时间或时间间隔转为ISO 8601格式方法示例
Sep 05 Python
Python实现感知机(PLA)算法
Dec 20 Python
python 实现将字典dict、列表list中的中文正常显示方法
Jul 06 Python
python生成密码字典的方法
Jul 06 Python
uwsgi+nginx部署Django项目操作示例
Dec 04 Python
Python格式化字符串f-string概览(小结)
Jun 18 Python
python文件转为exe文件的方法及用法详解
Jul 08 Python
Python Sympy计算梯度、散度和旋度的实例
Dec 06 Python
解决Keras TensorFlow 混编中 trainable=False设置无效问题
Jun 28 Python
python怎么对数字进行过滤
Jul 05 Python
Python依赖包迁移到断网环境操作
Jul 13 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输出Excel文件类
2010/02/08 PHP
php中将网址转换为超链接的函数
2011/09/02 PHP
深入解析php之sphinx
2013/05/15 PHP
基于php socket(fsockopen)的应用实例分析
2013/06/02 PHP
php抓取页面的几种方法详解
2013/06/17 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
javascript学习笔记(十) js对象 继承
2012/06/19 Javascript
DOM事件阶段以及事件捕获与事件冒泡先后执行顺序(图文详解)
2015/08/18 Javascript
原生js 封装get ,post, delete 请求的实例
2017/08/11 Javascript
基于cropper.js封装vue实现在线图片裁剪组件功能
2018/03/01 Javascript
Angular @HostBinding()和@HostListener()用法
2018/03/05 Javascript
vue2.0 + ele的循环表单及验证字段方法
2018/09/18 Javascript
vue自定义正在加载动画的例子
2019/11/14 Javascript
python中的yield使用方法
2014/02/11 Python
利用Python写一个爬妹子的爬虫
2018/06/08 Python
django-filter和普通查询的例子
2019/08/12 Python
浅谈pytorch grad_fn以及权重梯度不更新的问题
2019/08/20 Python
使用Python paramiko模块利用多线程实现ssh并发执行操作
2019/12/05 Python
python入门:argparse浅析 nargs='+'作用
2020/07/12 Python
html5中JavaScript removeChild 删除所有节点
2014/05/16 HTML / CSS
Vilebrequin欧洲官网:法国豪华泳装品牌(男士沙滩裤)
2018/04/14 全球购物
生产车间实习自我鉴定
2013/09/23 职场文书
单位门卫岗位职责
2013/12/20 职场文书
大学军训通讯稿
2014/01/13 职场文书
期末自我鉴定
2014/02/02 职场文书
公司员工检讨书
2014/02/08 职场文书
《挑山工》的教学反思
2014/02/16 职场文书
2014年师德承诺书
2014/05/23 职场文书
法制教育演讲稿
2014/09/10 职场文书
机关党总支领导班子整改方案
2014/09/20 职场文书
幼儿园大班教师个人总结
2015/02/05 职场文书
3.15消费者权益日活动总结
2015/02/09 职场文书
Python基础之赋值,浅拷贝,深拷贝的区别
2021/04/30 Python
oracle覆盖导入dmp文件的2种方法
2021/05/21 Oracle
python异步的ASGI与Fast Api实现
2021/07/16 Python
MyBatis在注解上使用动态SQL方式(@select使用if)
2022/07/07 Java/Android