使用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使用Queue在多个子进程间交换数据的方法
Apr 18 Python
JSON Web Tokens的实现原理
Apr 02 Python
Tensorflow 查看变量的值方法
Jun 14 Python
Python OpenCV处理图像之滤镜和图像运算
Jul 10 Python
Django 实现购物车功能的示例代码
Oct 08 Python
神经网络相关之基础概念的讲解
Dec 29 Python
Python文件操作中进行字符串替换的方法(保存到新文件/当前文件)
Jun 28 Python
python库matplotlib绘制坐标图
Oct 18 Python
Python3基本输入与输出操作实例分析
Feb 14 Python
python如何调用java类
Jul 05 Python
python 实现简易的记事本
Nov 30 Python
简单介绍Python的第三方库yaml
Jun 18 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将session放入memcached的设置方法
2014/02/14 PHP
关于javascript function对象那些迷惑分析
2011/10/24 Javascript
jQuery+JSON+jPlayer实现QQ空间音乐查询功能示例
2013/06/17 Javascript
jquery动态改变div宽度和高度
2015/02/09 Javascript
JS仿Windows开机启动Loading进度条的方法
2015/02/26 Javascript
js 动态给元素添加、移除事件的实现方法
2016/07/19 Javascript
js获取指定字符前/后的字符串简单实例
2016/10/27 Javascript
微信小程序 支付功能(前端)的实现
2017/05/24 Javascript
js判断用户是输入的地址请求的路径(实例讲解)
2017/07/18 Javascript
JS实现数组深拷贝的方法分析
2019/03/06 Javascript
Js通过AES加密后PHP用Openssl解密的方法
2019/07/12 Javascript
layer ui插件显示tips时,修改字体颜色的实现方法
2019/09/11 Javascript
vue中axios防止多次触发终止多次请求的示例代码(防抖)
2020/02/16 Javascript
vue实现动态给id赋值,点击事件获取当前点击的元素的id操作
2020/11/09 Javascript
如何在Express4.x中愉快地使用async的方法
2020/11/18 Javascript
[58:12]Ti4第二日主赛事败者组 LGD vs iG 3
2014/07/21 DOTA
[54:24]Optic vs TNC 2018国际邀请赛小组赛BO2 第二场
2018/08/18 DOTA
Python使用正则匹配实现抓图代码分享
2015/04/02 Python
对于Python的框架中一些会话程序的管理
2015/04/20 Python
在Linux中通过Python脚本访问mdb数据库的方法
2015/05/06 Python
解读! Python在人工智能中的作用
2017/11/14 Python
python 实现数字字符串左侧补零的方法
2018/12/04 Python
python3实现mysql导出excel的方法
2019/07/31 Python
pyecharts调整图例与各板块的位置间距实例
2020/05/16 Python
Python hashlib模块的使用示例
2020/10/09 Python
Bonami斯洛伐克:购买家具和家居饰品
2019/07/02 全球购物
销售经理岗位职责
2014/03/16 职场文书
四风剖析查摆对照检查材料思想汇报
2014/09/24 职场文书
2014年学校食堂工作总结
2014/11/25 职场文书
公司股份合作协议书
2014/12/07 职场文书
2015年汽车销售经理工作总结
2015/04/27 职场文书
欢送领导祝酒词
2015/08/12 职场文书
关于运动会的广播稿
2015/08/19 职场文书
《陶罐和铁罐》教学反思
2016/03/03 职场文书
修辞手法有哪些?
2019/08/29 职场文书
详解MySQL 用户权限管理
2021/04/20 MySQL