使用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的@property装饰器的用法
Apr 28 Python
Python中用于检查英文字母大写的isupper()方法
May 19 Python
Python使用爬虫猜密码
Feb 19 Python
python正则表达式的使用
Jun 12 Python
python抓取网站的图片并下载到本地的方法
May 22 Python
Python设置在shell脚本中自动补全功能的方法
Jun 25 Python
Django如何实现网站注册用户邮箱验证功能
Aug 14 Python
pytorch中使用cuda扩展的实现示例
Feb 12 Python
python文件及目录操作代码汇总
Jul 08 Python
python中pathlib模块的基本用法与总结
Aug 17 Python
python修改微信和支付宝步数的示例代码
Oct 12 Python
一篇文章带你了解Python和Java的正则表达式对比
Sep 15 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函数之error_reporting(E_ALL ^ E_NOTICE)详细说明
2011/07/01 PHP
smarty获得当前url的方法分享
2014/02/14 PHP
CI框架实现创建自定义类库的方法
2018/12/25 PHP
javascript相等运算符与等同运算符详细介绍
2013/11/09 Javascript
一个JavaScript去除字符串末尾的空白实例代码
2014/09/22 Javascript
JQuery实现图片轮播效果
2017/05/08 jQuery
基于wordpress的ajax写法详解
2018/01/02 Javascript
JS数组实现分类统计实例代码
2018/09/30 Javascript
vue实现分页栏效果
2019/06/28 Javascript
JavaScript实时更新当前的时间的示例代码
2020/07/15 Javascript
[05:08]2014DOTA2国际邀请赛 Hao专访复仇的胜利很爽
2014/07/15 DOTA
[03:17]2016完美“圣”典风云人物:冷冷专访
2016/12/08 DOTA
[00:10]DOTA2全国高校联赛速递
2018/05/30 DOTA
python实现猜数字游戏(无重复数字)示例分享
2014/03/29 Python
python中from module import * 的一个坑
2014/07/20 Python
Python、Javascript中的闭包比较
2015/02/04 Python
Python中几个比较常见的名词解释
2015/07/04 Python
python绘制铅球的运行轨迹代码分享
2017/11/14 Python
在cmd命令行里进入和退出Python程序的方法
2018/05/12 Python
关于django 数据库迁移(migrate)应该知道的一些事
2018/05/27 Python
Python爬虫框架scrapy实现的文件下载功能示例
2018/08/04 Python
python如何爬取网站数据并进行数据可视化
2019/07/08 Python
DJango的创建和使用详解(默认数据库sqlite3)
2019/11/18 Python
如何在Django中使用聚合的实现示例
2020/03/23 Python
英国户外装备和冒险服装零售商:alloutdoor
2018/01/30 全球购物
Bally巴利英国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/07 全球购物
医药大学生求职简历的自我评价
2013/10/17 职场文书
新员工欢迎词
2014/01/12 职场文书
学生手册评语
2014/05/05 职场文书
2014年房地产销售工作总结
2014/12/01 职场文书
欠款起诉书范文
2015/05/19 职场文书
学校运动会简讯
2015/07/20 职场文书
年中了,该如何写好个人述职报告?
2019/07/02 职场文书
2020年基层司法所建设情况调研报告
2019/11/30 职场文书
教你怎么用Python selenium操作浏览器对象的基础API
2021/06/23 Python