python验证码处理,python3的验证码识别算法
生成动态代码图像
为了模拟验证码的生成,第一个老师形成随机字符,并对字符进行模糊处理。本节介绍Python提供的Pillow模块。
枕头
Pil:python图像库,python图像处理标准库,功能强大。
PIL是第三方库,使用前必须安装。具体顺序如下。(如果安装了Anaconda,可以跳过这一步。)
$ pip安装枕头
首先简单说明一下枕头的作用。
操作图
缩放图像是Pillow的功能之一。比如如下图。
从pil导入图像
#打开图像并注意路径
img=image . open(pitball。JPEG格式).
#获取图像大小
重量,高度=img.size
Print()原始图像尺寸((x))。格式(高度,高度))
#缩放50%
img.thumbnail((重量//2,高度//2))
Print()调整后的图像尺寸((x))。格式(高度//2,高度//2))
#保存缩放后的图像
img.save(thumbnail.jpg , jpeg ).
Pillow还提供了其他功能,如旋转、剪切、滤镜、输出字符和调色板。
图像过滤器
尝试处理模糊的图像。
从PIL导入图像,图像过滤器
#打开图像文件,注意路径
img=image . open(pitball。JPEG格式).
#应用模糊滤镜
img 2=img . filter(image filter . blur))。
img2.save(blur.jpg , jpeg ).
ImageFilter是Python提供的图像过滤器,和image filter。模糊是一个模糊过滤器。
以上代码的具体效果如下。
ImageDraw
此外,Pillow的ImageDraw提供了几种可以直接绘制的列绘制方法。尝试以下方法生成字符认证码图像:
#-*-编码:utf-8-*-
""
@ file:生成_随机_代码. py
@时间:2020/01/3120336032336010
@作者:三千年大梦
@联系人:yiluolion@126.com
""
#将导入库放在这里
从随机导入randint,选择
从PIL导入图像,图像绘制,图像字体,图像过滤器
defRND_chr(chr_set):
来获取随机字符。
参数:
chr_set创建的字符集:
退货:
返回随机字符。
""
returnchoice(chr_set))
def rnd_bg_color():
获取随机像素值并填充背景。
退货:
返回随机像素值和元组类型。
""
Returns (randint (97,255),randint (97,255),randint (97,255))
def rnd_chr_color():
获取" "随机像素并填充输出字符。
退货:
返回随机像素值和元组类型。
""
#画板填充颜色有一定偏差,避免完全覆盖。
return (randint (32,96),randint (32,96),randint (32,96))
戴尔大师(:
#生成字符集
chr_set=[0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9]
对于范围(65,91):
CHR_set.append(CHR(I))
forjinrange (97,123):
CHR_set.append(CHR(j))
#print(chr_set))是
#定义画板尺寸25050
宽度=60 * 5
高度=60
图像对象来创建空白画板。
image=image.new(RGB ,)width,height),(255,255))
创建一个绘图对象
draw=ImageDraw。绘制(图像)
创建字体对象
font=image font.truetype(。/consola。TTF ,36)).
#填满画板
forxinrange(宽度) :
foryinrange(高度) :
Draw.point () x,y),fill=rnd_bg_color))
#文本填充
forninrange(5):
draw.text () 60 * n25,12)、rnd _ chr (chr _ set)、fill=rnd_chr_color)、font=font))))
#模糊保存图像内容
image=image.filter(图像过滤器.模糊).
image.save(。/random_code.jpg , jpeg )
if __name__==__main__ :
main())
代码的具体实现过程是用随机颜色填充背景,生成文字,最后模糊图像。具体效果如下
执行代码时,可能会出现以下错误:
错误:无法打开资源
这个问题是因为PIL不能确定字体文件的位置,所以考虑直接提供绝对位置。
font=image font . truetype(/absolute/path/font。TTF),36)).
本文中提到的枕头只是简单功能的一部分。要继续了解PIL的强大功能,请参考PILL的官方文档。
https://pillow.readthedocs.org/
以上是本文的全部内容,希望对大家的学习有所帮助。另外,希望大家能支持云天空教程。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。