使用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实现划词翻译
Apr 23 Python
使用python解析xml成对应的html示例分享
Apr 02 Python
python模拟enum枚举类型的方法小结
Apr 30 Python
python类:class创建、数据方法属性及访问控制详解
Jul 25 Python
Python实现注册登录系统
Aug 08 Python
Python3导入CSV文件的实例(跟Python2有些许的不同)
Jun 22 Python
Python3内置模块之json编解码方法小结【推荐】
Dec 09 Python
Python下opencv图像阈值处理的使用笔记
Aug 04 Python
Python Numpy库常见用法入门教程
Jan 16 Python
python和JavaScript哪个容易上手
Jun 23 Python
python matplotlib绘制三维图的示例
Sep 24 Python
python数据可视化使用pyfinance分析证券收益示例详解
Nov 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实现分页的一个示例
2006/10/09 PHP
php数组函数array_walk用法示例
2016/05/26 PHP
Thinkphp框架开发移动端接口(2)
2016/08/18 PHP
php实现不通过扩展名准确判断文件类型的方法【finfo_file方法与二进制流】
2017/04/18 PHP
PHP实现随机发扑克牌
2020/04/22 PHP
Javascript入门学习资料收集整理篇
2008/07/06 Javascript
COM中获取JavaScript数组大小的代码
2009/11/22 Javascript
jquery插件开发注意事项小结
2013/06/04 Javascript
js中cookie的添加、取值、删除示例代码
2013/10/21 Javascript
JS模拟Dialog弹出浮动框效果代码
2015/10/16 Javascript
JS实现的网页背景闪电闪烁效果代码
2015/10/17 Javascript
javascript运动框架用法实例分析(实现放大与缩小效果)
2016/01/08 Javascript
JS中使用apply、bind实现为函数或者类传入动态个数的参数
2016/04/26 Javascript
jQuery实现区域打印功能代码详解
2016/06/17 Javascript
js复制内容到剪贴板代码,js复制代码的简单实例
2016/10/27 Javascript
详解JavaScript的内置对象
2016/12/07 Javascript
JavaScript获取当前时间向前推三个月的方法示例
2017/02/04 Javascript
详解nodejs异步I/O和事件循环
2017/06/07 NodeJs
自制简易打赏功能的实例
2017/09/02 Javascript
JS变量提升原理与用法实例浅析
2020/05/22 Javascript
基于JavaScript实现猜数字游戏代码实例
2020/07/30 Javascript
[02:46]解说DC:感谢430陪伴我们的DOTA2国际邀请赛岁月
2016/06/29 DOTA
Python实现周期性抓取网页内容的方法
2015/11/04 Python
Python实现读取Properties配置文件的方法
2018/03/29 Python
python判断文件是否存在,不存在就创建一个的实例
2019/02/18 Python
Pyqt5实现英文学习词典
2019/06/24 Python
解决python彩色螺旋线绘制引发的问题
2019/11/23 Python
python使用itchat模块给心爱的人每天发天气预报
2019/11/25 Python
以实惠的价格提供高品质的时尚:Newchic
2018/01/18 全球购物
Hammitt官网:设计师手袋
2020/05/23 全球购物
司机的工作范围及职责
2013/11/13 职场文书
房地产财务管理制度
2014/02/02 职场文书
毕业生自荐书
2014/02/03 职场文书
寒假家长评语大全
2014/04/16 职场文书
2015迎新晚会开场白
2015/05/29 职场文书
小学见习报告
2015/06/23 职场文书