Si vous voulez « rouler vos propres » je suggère les étapes suivantes:
D'abord, squelettisent (mince sur l'image jusqu'à ce que toutes les lignes sont épaisses d'un pixel). Il y a plusieurs façons de le faire, et c'est un problème bien étudié. Google pour plus d'informations.
Maintenant, à partir d'un pixel noir, parcourez et tracer le contour de l'image, un pixel à la fois. Vous ajoutez chacun de ces segments à une liste de segments décrivant la forme (chaque segment sera une simple ligne d'un pixel à son pixel adjacent). Vous avez maintenant le contour de votre forme sous la forme d'un polygone à plusieurs côtés.
(étape possible à ce stade: lisser le contour en tirant chaque sommet plus proche de la moyenne de ses voisins)
Maintenant, vous utilisez un algorithme de détection d'angle pour trouver les coins (jetez un coup d'oeil ici: http: //visual.ipan.sztaki.hu/corner/node7.html).
Cela devrait suffire à identifier les formes que vous avez listées.
Si vous souhaitez obtenir plus intelligent, vous pouvez également identifier les types d'arêtes qui existent entre les coins. Si le segment entre deux coins reste à l'intérieur d'un certain seuil de la ligne droite qui les sépare, vous le traitez comme une ligne "droite". Si ce n'est pas le cas, vous le traitez comme un bord incurvé.
Avec les coins + le bord droit/incurvé, vous pouvez probablement détecter n'importe laquelle des formes que vous recherchez.
Pouvez-vous poster des exemples (captures d'écran) des formes? –
J'ai ajouté quelques captures d'écran –