使用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 相关文章推荐
使用Mixin设计模式进行Python编程的方法讲解
Jun 21 Python
Python生成密码库功能示例
May 23 Python
git进行版本控制心得详谈
Dec 10 Python
Python实现的各种常见分布算法示例
Dec 13 Python
Python读取指定日期邮件的实例
Feb 01 Python
python3.7 使用pymssql往sqlserver插入数据的方法
Jul 08 Python
python中dict()的高级用法实现
Nov 13 Python
pytorch读取图像数据转成opencv格式实例
Jun 02 Python
Python引入多个模块及包的概念过程解析
Sep 21 Python
python中append函数用法讲解
Dec 11 Python
python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单
May 25 Python
python 实现图片特效处理
Apr 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
thinkphp模板的包含与渲染实例分析
2014/11/26 PHP
PHP中PCRE正则解析代码详解
2019/04/26 PHP
Js数组的操作push,pop,shift,unshift等方法详细介绍
2012/12/28 Javascript
JQuery打造省市下拉框联动效果
2014/05/18 Javascript
js中通过父级进行查找定位元素
2014/06/15 Javascript
原生js实现日期联动
2015/01/12 Javascript
Node.js事件循环(Event Loop)和线程池详解
2015/01/28 Javascript
详解基于Bootstrap扁平化的后台框架Ace
2015/11/27 Javascript
js调出上下文菜单的实例
2015/12/17 Javascript
jQuery自定义插件详解及实例代码
2016/12/29 Javascript
微信小程序自定义导航隐藏和显示功能
2017/06/13 Javascript
Vue.js学习笔记之常用模板语法详解
2017/07/25 Javascript
使用D3.js创建物流地图的示例代码
2018/01/27 Javascript
JavaScript引用类型Array实例分析
2018/07/24 Javascript
vue动画之点击按钮往上渐渐显示出来的实例
2018/09/29 Javascript
react native基于FlatList下拉刷新上拉加载实现代码示例
2018/09/30 Javascript
layui实现下拉复选功能的例子(包括数据的回显与上传)
2019/09/24 Javascript
python实现的一只从百度开始不断搜索的小爬虫
2013/08/13 Python
python版本的读写锁操作方法
2016/04/25 Python
Python3实现将本地JSON大数据文件写入MySQL数据库的方法
2018/06/13 Python
python2.x实现人民币转大写人民币
2018/06/20 Python
Django 路由控制的实现
2019/07/17 Python
基于python解线性矩阵方程(numpy中的matrix类)
2019/10/21 Python
CSS3制作彩色进度条样式的代码示例分享
2016/06/23 HTML / CSS
HTML5响应式(自适应)网页设计的实现
2017/11/17 HTML / CSS
Wiggle中国:英国骑行、跑步、游泳 & 铁三运动装备专卖网店
2016/08/02 全球购物
捷克多品牌在线时尚商店:ANSWEAR.cz
2020/10/03 全球购物
外企办公室竞聘演讲稿
2013/12/29 职场文书
工程管理英文求职信
2014/03/18 职场文书
《小动物过冬》教学反思
2014/04/17 职场文书
房地产公司见习自我鉴定
2014/04/28 职场文书
争先创优演讲稿
2014/09/15 职场文书
2014年文秘工作总结
2014/11/25 职场文书
五好文明家庭事迹材料
2014/12/20 职场文书
浅谈Python 中的复数问题
2021/05/19 Python
Nginx配置之实现多台服务器负载均衡
2021/08/02 Servers