2011-04-29 3 views
3

Je travaille avec OpenCV depuis peu de temps et j'ai effectué une détection de bord Canny sur une image, et j'ai ensuite effectué une dilatation pour séparer l'objet (dans mon cas un carré) de l'arrière-plan.Récupère les coordonnées de bord après détection de bord (Canny)

Mon problème, maintenant, est d'identifier les régions saisissables en 2D en utilisant un algorithme qui me demande de gérer les coordonnées des points de ces arêtes. Est-ce que je peux utiliser OpenCV pour obtenir les coordonnées des coins afin que je puisse trouver l'équation des lignes formant le bord du carré? Je connais la taille du carré. Mon problème concerne la géométrie des coordonnées 2D, et donc le besoin de coordonnées.

Je peux fournir l'image après détection de contours et dilatation si nécessaire. L'aide serait grandement appréciée.

Répondre

1

Vous pouvez utiliser les détecteurs d'angle fournis dans OpenCV comme Harris ou Corner Eigenvalues. Here's un exemple de cela avec du code à part entière.

Si d'autres fonctions sont également en train de créer des coins, vous devrez peut-être effectuer une analyse des composants connectés.

3

Juste offrant une deuxième méthode - pas garanti pour fonctionner.

  • Étape 1: extraire le composant connecté et leurs contours. Cela peut être appliqué après l'étape de détection Canny Edge.
  • Étape 2: Si les contours sont assez bonne approximation d'un carré, vous pouvez utiliser leur boîte englobante directement.
    • BoundingRect - si les rectangles sont toujours debout (non tourné)
    • MinAreaRect - si les rectangles sont mis en rotation.

La raison de l'avertissement est qu'il ne fonctionne que sur les résultats très propres, sans bords cassés ou des lacunes dans les bords Canny, etc. Si vous avez besoin d'une manière plus robuste de trouver des rectangles, Hough transform sera être nécessaire.