使用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使用在线API查询IP对应的地理位置信息实例
Jun 01 Python
python语言使用技巧分享
May 31 Python
Python用list或dict字段模式读取文件的方法
Jan 10 Python
详解Python 装饰器执行顺序迷思
Aug 08 Python
由Python编写的MySQL管理工具代码实例
Apr 09 Python
Python安装Flask环境及简单应用示例
May 03 Python
PyQt5 实现字体大小自适应分辨率的方法
Jun 18 Python
python pytest进阶之conftest.py详解
Jun 27 Python
python的mysql数据库建立表与插入数据操作示例
Sep 30 Python
python 遍历pd.Series的index和value
Nov 26 Python
在Python中实现函数重载的示例代码
Dec 12 Python
如何正确理解python装饰器
Jun 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 创建文件(文件夹)以及目录操作代码
2010/03/04 PHP
php控制linux服务器常用功能 关机 重启 开新站点等
2012/09/05 PHP
Tinymce+jQuery.Validation使用产生的BUG
2010/03/29 Javascript
JavaScript中关于indexOf的使用方法与问题小结
2010/08/05 Javascript
node.js中的require使用详解
2014/12/15 Javascript
javascript实现简单的二级联动
2015/03/19 Javascript
javascript常用的方法整理
2015/08/20 Javascript
jQuery实现鼠标滑过图片移动特效
2016/12/08 Javascript
Javascript实现基本运算器
2017/07/15 Javascript
Vue.js实现实例搜索应用功能详细代码
2017/08/24 Javascript
axios post提交formdata的实例
2018/03/16 Javascript
关于jquery layui弹出层的使用方法
2018/04/21 jQuery
实例详解Vue项目使用eslint + prettier规范代码风格
2018/08/20 Javascript
关于vue编译版本引入的问题的解决
2018/09/17 Javascript
vue路由 遍历生成复数router-link的例子
2019/10/30 Javascript
微信小程序scroll-view锚点链接滚动跳转功能
2019/12/12 Javascript
[04:50]DOTA2亚洲邀请赛小组赛第四日 TOP10精彩集锦
2015/02/02 DOTA
Python中变量交换的例子
2014/08/25 Python
使用Python的Twisted框架构建非阻塞下载程序的实例教程
2016/05/25 Python
深入了解Python中pop和remove的使用方法
2018/01/09 Python
Python实现将doc转化pdf格式文档的方法
2018/01/19 Python
Python文件循环写入行时防止覆盖的解决方法
2018/11/09 Python
Django2.1.3 中间件使用详解
2018/11/26 Python
python 处理微信对账单数据的实例代码
2019/07/19 Python
canvas绘制图片drawImage使用方法
2020/09/15 HTML / CSS
金蝶的一道SQL笔试题
2012/12/18 面试题
煤矿班组长岗位职责
2013/12/29 职场文书
早餐连锁店计划书
2014/01/08 职场文书
中秋节礼品促销方案
2014/02/02 职场文书
植树造林的宣传标语
2014/06/23 职场文书
煤矿安全知识竞赛活动总结
2014/07/07 职场文书
秋季运动会广播稿(30篇)
2014/09/13 职场文书
艺术节开幕词
2015/01/28 职场文书
2015年电厂工作总结范文
2015/05/13 职场文书
详解MySQL InnoDB存储引擎的内存管理
2021/04/08 MySQL
如何用JavaScript检测当前浏览器是无头浏览器
2021/04/27 Javascript