Типичный инструмент питона цепь будет:
Как далеко , дифференцируя фигуры, я бы получил свой силуэт, посмотрев на форму фона. Затем я обнаружил бы число углов, используя алгоритм corner detection (например, Harris). Треугольник имеет 3 угла, квадрат 4, а смайлик - нет. Вот питон implementation of the Harris corner detection with Scipy.
Edit:
Как вы упоминаете в комментариях, сообщение в блоге не представляет функцию, которая производит гауссово ядро, необходимое в алгоритме. Вот пример такой функции от Scipy Cookbook (большой ресурс BTW):
def gauss_kern(size, sizey=None):
""" Returns a normalized 2D gauss kernel array for convolutions """
size = int(size)
if not sizey:
sizey = size
else:
sizey = int(sizey)
x, y = mgrid[-size:size+1, -sizey:sizey+1]
g = exp(-(x**2/float(size)+y**2/float(sizey)))
return g/g.sum()
+1, хороший намек, Scipy, похоже, еще один ключ, im работает пример Harris :) – panchicore
нет, я не могу запустить этот пример Harris, код кажется неполным :( – panchicore
строка-код: gauss = filtertools.gauss_kernel (3) ... gauss_kernel def не существует :( – panchicore