生成3D CAPTCHA [图](Generating a 3D CAPTCHA [pic])

2019-06-23 17:56发布

我想编写一个Python脚本,将生成一个3D CAPTCHA像这样的:

我可以使用哪些图形库?

来源: ocr-research.org.ua

Answer 1:

有许多方法。 我会亲自创建使用Python图像库的图像ImageDraw的draw.text,转换为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')

显然,有一个小的工作要做,消除轴,改变视角等。



Answer 2:

另外结合考虑用OpenGL渲染是pyglet 。 它最大的特点是,它仅仅是一个下载。 我想里面有您需要实现什么阿努拉格阐明了一切。

我会提醒你,你正在试图做的是不完全的3D图形简单的第一个项目。 如果这是您第一次接触到OpenGL,考虑了一系列类似的教程讷河教程和其他帮助的OpenGL网站 。



Answer 3:

我不知道我要做一个完整的3D库麻烦你有什么上面。 刚才生成的三维点的矩阵,产生的东西,如PIL文本,扫描通过它来寻找对电网指向复活,选择一个随机的相机角度,然后投射点为二维图像,并与PIL到吸引他们最终图像。

话虽这么说......你可以使用VPython如果你不想自己做的3D数学。



Answer 4:

使用的OpenGL,Python绑定http://pyopengl.sourceforge.net/ 。

在使用黑色表面创建的白色文字2D图像PIL 。 制作一个三维网格从此,增加点的z其中颜色是白色的,也许集合Z =颜色值,所以通过模糊图像,你可以在Z方向上得到真正的曲线。

创建从这些点OpenGL的三角形,使用线框模式,同时渲染。

抓住的OpenGL缓冲器成图像,例如, http://python-opengl-examples.blogspot.com/2009/04/render-to-texture.html 。



文章来源: Generating a 3D CAPTCHA [pic]