10

J'ai une image avec un triangle équilatéral et un rectangle:
equilateral triangle and a rectangle
Et je veux détecter 3 coin du triangle seulement. Je suis le OpenCV Harris corner detector tutorial Je vois que tous les coins du triangle ont le seuil = 80 (quand tous les 4 coins du rectangle seuil = 255). Mais je n'ai pas trouvé le lien entre seuil et degré.Comment détecter avec un degré d'angle angle spécifique

Comment puis-je trouver le coin dans la gamme de [55,65] degré, par exemple?
Voici la sortie Mat http://pastebin.com/raw.php?i=qNidEAG0

P/s: Je très nouveau pour CV, j'espère que vous pouvez donner plus de détails!

Répondre

9

Il semble que j'ai trouvé une solution possible. Je l'ai implémenté sur Mathematica et capable d'expliquer les étapes de base.

  1. Utilisez l'opérateur de recherche de coins et prenez les angles les plus forts. Utilisez l'opérateur Harris. Corners
  2. Trouver les contours (cv :: FindContours).

    Contours

  3. Pour chaque coin dans chaque contour dessiner un cercle et trouver le point d'intersection entre le cercle et le contour. Il n'y a pas de fonction prête pour cela dans OpenCV et vous devriez l'implémenter vous-même.

    Intersections

  4. Maintenant, pour chaque coin, vous avez les coordonnées de trois points: coin, et deux points sur les côtés du contour. Il suffit d'évaluer les angles à l'aide dot product:

    angle estimation

Résultat:

Corners found

+0

Pour la première étape, vous voulez dire est de trouver tous les maxima locaux du résultat forment le * cv :: cornerHarris *? – nvcnvn

+0

Oui, vous l'avez bien compris. – brotherofken

+0

Excellente solution! Je pense que la façon la plus facile de trouver des points d'intersection au point 3 est de dessiner des cercles sur l'image vide (vide) et l'utilisation & opérateur sur cette image et sur l'image des contours. Le résultat devrait être tous les points d'intersection. – cyriel

Questions connexes