python去除噪点_如何用python搞定验证码中的噪点

背景:朋友在为"关山口男子职业技术学校"写一款校园应用,于是找MoonXue写一个学生选课系统的登录接口.为了搞定这个接口,不得不先搞定这个系统的验证码.

验证码大概是这个样子

看上去不怎么难,没有干扰线没有粘连没有扭曲.但还是没能用pytesser直接将它识别出来,因为当中有噪点和其他背景噪声的存在.MoonXue的工作就是去掉这些讨厌的东西

先介绍一下,我们的工具:

1.Pytesser  它是基于一个c语言实现名为tesser的识别工具的python封装.可惜比较笨,只能做最简单的识别而且不认识汉字

2.Requests  它是我们喜欢写爬虫的孩子的最爱,提供人性化的接口,代价是失去了一点效率(写python就别考虑效率啦)

3.BeautifulSoup  它和Requests是一对好机油,让提取文档中所需的内容变成一件简单的事情

4.PIL      它是今天的主角,PIL是专门用作图像处理的库,很好很强大.熟练的人甚至可以用它来P图

如何写爬虫去实现模拟登录此处不细说,下面说说怎么解决验证码识别

解决思路如下:

1.先用PIL对图像做一次图像增强,因为原图中数字的边缘和背景中的噪声并不是太分明,做了增强之后能将两者分离.如果不分离,可能会在去噪点的时候导致数字中有部分会缺失

im = Image.open("randomimage/randomImage11.jpg")

im= ImageEnhance.Sharpness(im).enhance(3)

参数为3是经过实验之后感觉比较理想的值,太强不好,太弱也不好

2.做完预处理之后,就是去背景噪声了.背景噪声指的是背景中各种明暗变换的色块,肉眼也许不会注意到这个.但是它的存在会给识别带来影响.我最初的做法是将图像转换为只有黑白两色,这样

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值