我想编写一个Python脚本,将生成一个3D CAPTCHA像这样的:
我可以使用哪些图形库?
来源: ocr-research.org.ua
我想编写一个Python脚本,将生成一个3D CAPTCHA像这样的:
我可以使用哪些图形库?
来源: ocr-research.org.ua
有许多方法。 我会亲自创建使用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')
显然,有一个小的工作要做,消除轴,改变视角等。
另外结合考虑用OpenGL渲染是pyglet 。 它最大的特点是,它仅仅是一个下载。 我想里面有您需要实现什么阿努拉格阐明了一切。
我会提醒你,你正在试图做的是不完全的3D图形简单的第一个项目。 如果这是您第一次接触到OpenGL,考虑了一系列类似的教程讷河教程和其他帮助的OpenGL网站 。
我不知道我要做一个完整的3D库麻烦你有什么上面。 刚才生成的三维点的矩阵,产生的东西,如PIL文本,扫描通过它来寻找对电网指向复活,选择一个随机的相机角度,然后投射点为二维图像,并与PIL到吸引他们最终图像。
话虽这么说......你可以使用VPython如果你不想自己做的3D数学。
使用的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 。