生成3D验证[图]

12 python graphics captcha

我想编写一个Python脚本来生成像这样的3D CAPTCHA: 茶袋验证码

我可以使用哪些图形库?

资料来源:ocr-research.org.ua

Pau*_*aul 33

有很多方法.我会亲自使用ImageDraw的draw.text 在Python Imaging Library中创建图像,转换为NumPy数组(usint NumPy的asarray),然后使用Matplotlib进行渲染.(需要Matplotlib 维护包).

完整代码(2.5):

import numpy, pylab
from PIL import Image, ImageDraw, ImageFont
import matplotlib.axes3d as axes3d

sz = (50,30)

img = Image.new('L', sz, 255)
drw = ImageDraw.Draw(img)
font = ImageFont.truetype("arial.ttf", 20)

drw.text((5,3), 'text', font=font)
img.save('c:/test.png')

X , Y = numpy.meshgrid(range(sz[0]),range(sz[1]))
Z = 1-numpy.asarray(img)/255

fig = pylab.figure()
ax = axes3d.Axes3D(fig)
ax.plot_wireframe(X, -Y, Z, rstride=1, cstride=1)
ax.set_zlim((0,50))
fig.savefig('c:/test2.png')
Run Code Online (Sandbox Code Playgroud)

替代文字

显然,还有一些工作要做,消除轴,改变视角等.


Bra*_*all 2

我不确定我是否会为您上面所拥有的完整 3D 库而烦恼。只需生成 3D 点矩阵,使用 PIL 之类的工具生成文本,扫描它以查找网格上凸起的点,选择随机相机角度,然后将这些点投影到 2D 图像中,并使用 PIL 将它们绘制到最终图像。

话虽这么说……如果您不想自己进行 3D 数学计算,您也许可以使用VPython 。