使用python 对验证码图片进行降噪处理
作者:大蛇王 发布时间:2022-01-27 23:02:16
标签: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()
运行结果图如下:
然后对黑白图片进行降噪,去掉那些单独的黑色像素点:
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')
运行结果如下图所示:
最后对边框上附着的黑色像素点进行消除:
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')
运行结果:
来源:https://blog.csdn.net/t8116189520/article/details/80342512


猜你喜欢
- 近几年来,nosql大行其道,json更是火的一塌糊涂,作为数据库的元老,mysql在5.7版本中添加了对json数据的支持。这片博客主要介
- 1.切片# 切片:取list或tuple的部分元素nameList = ["Willard","ChenJD&
- 这个语法是用来代替传统的try...finally语法的。 with EXPRESSION [ as VARIABLE] WITH-BLOC
- 业务场景:需要记入访客的访问情况,但不能重复记入可以插入前进行判断要插入的数据是否存在业务代码如下 :INSERT INTO t_topic
- 柱形图bar()函数绘制柱形图import matplotlib.pyplot as plx = [1,2,3,4,5,6,7]y = [1
- DML、DDL、DCL区别 . 总体解释: DML(data manipulation language): 它们是SELECT、UPDAT
- 一直对asyncio这个库比较感兴趣,毕竟这是官网也非常推荐的一个实现高并发的一个模块,python也是在python 3.4中引入了协程的
- 近日在Ubuntu上安装了一个 MySQL 5.0,因为使用 phpMyAdmin 还必须安装 PHP,所以打算直接使用远程管理工具Navi
- 首先声明,没有什么不良动机,因为经常会用 translate.google.cn,就想着用 Python 模拟网页提交实现文档的批量翻译。据
- 不知大家对精华区的表格排序终极优化是否还有记忆,当时讨论的结果曾以为是最快的JS排序了,实则不然,按前段时间我发的DHTML性能提升帖(转译
- 本文实例为大家分享了python3 smtplib发送邮件的具体代码,供大家参考,具体内容如下smtplib模块是smtp简单邮件传输协议客
- -- 基本查询select * from pet-- 列出指定的列select name, owner form pet-- 直接进行算术运
- 启动targetcli时遭遇ImportError: cannot import name ALUATargetPortGrou
- 即使在不太复杂的样式表中,也可能会有两个或者更多个规则找到同一元素。CSS通过一个叫做层叠(cascade)的过程处理这种冲突。
- 一、引入必要文件下载地址:(https://github.com/nghuuphuoc/bootstrapvalidator/archive
- 前言因为种种原因没能实现愿景的目标,在这里记录一下中间结果,也算是一个收场吧。这篇博客主要是用selenium解决滑块验证码的个别案列。思路
- 本文研究的主要是python可视化包Bokeh的相关内容,具体如下。问题:需要把pandas的数据绘图并通过网页显示,matplotlib需
- 指定捕获过滤器捕获过滤器的语法格式为:<Protocol> <Direction> <Host> <
- 一、概念介绍本质上,webpack 是一个现代JavaScript 应用程序的静态模块打包器(module bundler)。当 webpa
- aspImage是ServerObjects站点上非常好的一个组件,它可以使我们利用Asp实现很多对于图形的处理功能,他的功能强大,如果你需