Вопрос по python, captcha – Создание 3D-капчи [рис.]

12

Я хотел бы написать сценарий Python, который будет генерировать 3DCAPTCHA, как этот: teabag captcha

Какие графические библиотеки я могу использовать?

Источник:ocr-research.org.ua

Просто еще один вопрос: 3d капча сложнее? RMAAlmeida
Да. И они на самом деле продают это крупным компаниям. RobertW
О нет, кто-то действительно называл это пакетиком? Jim Buck
Гораздо сложнее. Прочитайте «источник» для получения дополнительной информации. RobertW

Ваш Ответ

4   ответа
33

жений Python, используяImageDrawDraw.text, преобразовать вNumPy массив (используя NumPy 'sasarray) затем рендер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')

alt text

Очевидно, что нужно проделать небольшую работу, устранить оси, изменить угол обзора и т. Д.

В зависимости от того, где это видно на экране моего браузера, серые линии сетки на изображении исчезают.
+1 листать круто. Ты сделал это!
+1 для примера кода, это выглядит как хорошее начало.
Очень очень хорошо. Именно то, что я хотел. Большое спасибо! (Я вышел из системы, поэтому не могу проголосовать за ответ :().
2

что возился бы с полной библиотекой 3D для того, что у вас есть выше. Просто сгенерируйте матрицу трехмерных точек, сгенерируйте текст с помощью чего-то вроде PIL, отсканируйте его, чтобы найти точки на сетке, выберите случайный угол камеры, затем спроецируйте точки в 2D-изображение и нарисуйте их с помощью PIL в окончательное изображение.

Это, как говорится ... вы можете использоватьVPython если вы не хотите заниматься трехмерной математикой самостоятельно.

да, я бы сказал, что вам нужно будет выполнять целые матричные манипуляции или векторные вращения
Как мне "сгенерировать матрицу 3d-шрифтов"?
У меня нет знаний по трехмерной графике, но у меня много знаний по линейной алгебре.
Это был бы просто список кортежей - у каждого кортежа было бы 3 числа - представляющих x, y и z.
RobertW: Без каких-либо предварительных знаний о трехмерной графике, это требует немного читабельности, прежде чем вы сможете попробовать это, я думаю.
4

pyglet, Его лучшая особенность в том, что это всего лишь одна загрузка. Я думаю, что он содержит все, что вам нужно для реализации того, что излагает Анураг.

Я предупреждаю вас, что то, что вы пытаетесь сделать, не совсем простой первый проект в области трехмерной графики. Если вы впервые знакомитесь с OpenGL, рассмотрите серию руководств, таких какNeHe учебники  и другая помощь отСайт OpenGL.

1

http://pyopengl.sourceforge.net/.

Создайте 2D-изображение текста белого цвета на черной поверхности, используяPIL. Make a 3D grid from this, increase z of point where color is white, maybe set z=color value, so by blurring the image you can get real curves in the z direction.

Создайте треугольник OpenGL из этих точек, используйте режим каркаса при рендеринге.

Захватите буфер OpenGL в изображение, например, http://python-opengl-examples.blogspot.com/2009/04/render-to-texture.html.

Я хотел бы сделать это сам, учитывая достаточную мотивацию;)

Похожие вопросы