python验证码处理(1)
程序员文章站
2022-05-18 20:18:09
[TOC] 这篇博客及之后的系列,我会向大家介绍各种验证码的识别。包括普通图形验证码,极验滑动验证码,点触验证码,微博宫格验证码。 一.普通图形验证码 之前的博客已向大家介绍了简单的图形验证码的处理过程,但是会和实际的有所差别,这是因为验证码内的多余线条与图案干扰了图片的识别。因此,对于这种情况,需 ......
目录
这篇博客及之后的系列,我会向大家介绍各种验证码的识别。包括普通图形验证码,极验滑动验证码,点触验证码,微博宫格验证码。
一.普通图形验证码
之前的博客已向大家介绍了简单的图形验证码的处理过程,但是会和实际的有所差别,这是因为验证码内的多余线条与图案干扰了图片的识别。因此,对于这种情况,需要我们进行一些处理,然后才能识别出正确的结果,下面是进行处理的方法。
1.灰度处理
可以用image对象的convert()方法传入参数l,就可以把图片转化为灰度图像,如下代码:
img = image.open('1.jpg') image = img.convert('l') image.show()
结果为:
2.二值化处理
可以传入1进行二值化处理,如下代码:
img = image.open('1.jpg') image = img.convert('1') image.show()
结果为:
还可以指定二值化的阈值,默认的阈值是127,要指定的话必须要先转化为灰度图像,再指定二值化的阈值。代码如下:
image = image.open('1.jpg') # 先转化为灰度图片 image = image.convert('l') threshold = 180 # 设置阈值 my = [] for i in range(256): if i < threshold: my.append(0) else: my.append(1) # 二值化处理 image = image.point(my,'1') image.show()
这里原来的验证码中的线条已经去除,验证码变得很清楚。这个时候重新识别验证码,结果如下:
上一篇: 摔玻璃球找临界楼层问题
下一篇: 客户端存储技术