Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 生成3D验证码[pic]_Python_Graphics_Captcha - Fatal编程技术网

Python 生成3D验证码[pic]

Python 生成3D验证码[pic],python,graphics,captcha,Python,Graphics,Captcha,我想编写一个Python脚本,生成一个3D,如下所示: 我可以使用哪些图形库 资料来源:我不确定我是否会为你上面所拥有的全部3D库而烦恼。只需生成一个3D点矩阵,用类似PIL的东西生成文本,在上面扫描,找出网格上哪些点是凸起的,选择一个随机的相机角度,然后将这些点投影到2D图像中,并用PIL将它们绘制到最终图像中 话虽如此。。。如果您不想自己进行3D计算,您可以使用。使用用于OpenGL的Python绑定 使用在黑色表面上创建白色文本的二维图像。 从这里做一个3D网格,增加颜色为白色的点的z,

我想编写一个Python脚本,生成一个3D,如下所示:

我可以使用哪些图形库


资料来源:

我不确定我是否会为你上面所拥有的全部3D库而烦恼。只需生成一个3D点矩阵,用类似PIL的东西生成文本,在上面扫描,找出网格上哪些点是凸起的,选择一个随机的相机角度,然后将这些点投影到2D图像中,并用PIL将它们绘制到最终图像中


话虽如此。。。如果您不想自己进行3D计算,您可以使用。

使用用于OpenGL的Python绑定

使用在黑色表面上创建白色文本的二维图像。 从这里做一个3D网格,增加颜色为白色的点的z, 可以设置z=颜色值,这样通过模糊图像,可以获得z方向上的真实曲线

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

例如,将OpenGL缓冲区抓取到图像中,

< P>另一个考虑用OpenGL渲染的绑定是。它最大的特点是只需一次下载。我认为它包含了实现Anurag阐明的内容所需的一切


我要提醒你,你要做的并不是一个简单的3d图形第一个项目。如果这是您第一次接触OpenGL,请考虑一系列教程和其他帮助。

< P>有很多方法。我个人会使用的draw.text在Python图像库中创建图像,转换为数组(usint NumPy),然后使用渲染。(需要Matplotlib)

完整代码(在2.5中):


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

还有一个问题:3d验证码比ocr难吗?难多了。阅读“来源”了解更多信息。哦,不,真的有人叫它茶包吗?是的。他们实际上是把这个卖给大公司。我如何“生成一个3d Pont矩阵”?那只是一个元组列表-每个元组有3个数字-代表x、y和z。罗伯托:如果事先没有3d图形方面的知识,我想在你尝试这个之前需要大量阅读。是的,我想说的是,你需要实现整个矩阵操作或向量旋转。我不懂3D图形,但我有很多线性代数知识。如果有足够的动力,我很愿意自己做这件事;)非常非常好。正是我想要的。谢谢!(我注销了,所以我不能投票给你答案:()。取决于在我的浏览器屏幕上看到的位置,图像上的灰色网格线消失了。
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')