IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenCV Discussion :

Détection de rectangles


Sujet :

OpenCV

  1. #1
    Membre éclairé Avatar de kitsune
    Inscrit en
    Décembre 2004
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Décembre 2004
    Messages : 341
    Par défaut Détection de rectangles
    Bonjour,

    Je voulais savoir si OpenCv intégrait une fonction de détection de rectangles même si ces derniers ne sont pas correctement alignés à l'horizontal de l'image ?

    Si non, existe-t-il des algorithmes pour cela ?

    Merci !

  2. #2
    Membre éprouvé Avatar de hunta_kirua
    Profil pro
    Inscrit en
    Février 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 110
    Par défaut
    Salut,

    Je ne crois pas qu'il existe de méthode directe pour extraire les rectangles sous openCV. Par contre, tu peux utiliser la transformée de Hough (cvhoughlines ou quelque chose du genre) pour récupérer les droites et en déduire tes rectangles.

    A+

    Hunta

  3. #3
    Membre éclairé Avatar de kitsune
    Inscrit en
    Décembre 2004
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Décembre 2004
    Messages : 341
    Par défaut
    Merci pour votre reponse !
    En fait pour le moment je passe en niveaux de gris et j'applique l'algorithme de Canny afin de recuperer les contours.
    J'explique quand meme que ce que je cherche a detecter sont des sortes de balises noires et blanches avec des motifs rectangulaires dans un environnement quelconque.

    Du coup, une fois avec les contours, j'aimerai recuperer des points clefs qui sont des angles du motif au centre de la balise.
    Je pense qu'il faudrait deja que je puisse "supprimer" le fond de l'image qui n'est pas la balise afin de ne pas detecter autre chose.
    Mais apres ? Comment recuperer les donnees des contours ou simplement les angles ?

    Merci beaucoup

  4. #4
    Membre éprouvé Avatar de hunta_kirua
    Profil pro
    Inscrit en
    Février 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 110
    Par défaut
    Salut,

    La transformée de Hough te permet de déterminer les alignements de pixels selon un certain angle. Du coup, quand tu trouves une droite, tu as directement sa longueur et l'angle associé (faire attention au repère pour l'angle, de tête il est un peu bizarre sous opencv). Je ne sais pas si c'est la méthode la plus adaptée pour ton problème mais ça ne coûte rien de regarder.

    Si ça t'intéresse et que je retrouve mon code là-dessus, je le mettrai dans un futur post.

    A+

    Hunta

  5. #5
    Membre éclairé Avatar de kitsune
    Inscrit en
    Décembre 2004
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Décembre 2004
    Messages : 341
    Par défaut
    Ben je sais pas trop non plus vu que je ne connais pas bien OpenCV mais si je peux detecter les droites quelque soit leur alignement et les angles, je pense que je pourrai alors trouver mes "coins" et donc determiner les points qui m'interessent...
    Je vais regarder Hough alors.

    Si tu remets la main sur ton bout de code je suis effectivement interessee !

    Merci beaucoup.

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 8
    Par défaut
    il y a deux exemples qui peuvent t'aider dans
    <C:\Program Files\OpenCV>\samples\c :

    -squares.c : programme de détection de rectangles (par morphomaths il me semble)

    -lkdemo.c : ce programme commence par détecter des points caractéristiques, puis les suit par estimation du flot optique. Les "GoodFeaturesToTrack" pourraient bien t'aider.

  7. #7
    Membre éclairé Avatar de kitsune
    Inscrit en
    Décembre 2004
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Décembre 2004
    Messages : 341
    Par défaut
    Ouf en effet ca me semble plutot interessant !
    Surtout squares.c qui apparemment permet de recuperer les contours et de calculer les angles, exactement ce qu'il me faut puisque ma forme ressemble a un "E" sans la barre horizontale du milieu...

    Je vais voir si je peux en tirer quelque chose, merci beaucoup !

  8. #8
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 8
    Par défaut
    you can call me Al

  9. #9
    Membre éclairé Avatar de kitsune
    Inscrit en
    Décembre 2004
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Décembre 2004
    Messages : 341
    Par défaut
    EDIT: en fait j'ai reussi merci beaucoup !

    Alors j'ai teste et bidouille l'exemple des squares pour que ca s'adapte a mon "crochet". C'est-a-dire qu'au lieu de detecter 4 points ayant des angles a 90, j'en cherche 8 qui forment une forme non convexe.
    Apparemment il me trouve bien ma forme dans l'image car il me renvoit 8 points dans la boucle sur les contours.
    J'arrive ensuite a recuperer ces points de la ou je les ai stocke mais impossible d'afficher le resultat.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     // draw the square as a closed polyline 
            cvPolyLine( cpy, &rect, &count, 1, 1, CV_RGB(255,0,0), 4, CV_AA, 0 );
    J'obtiens une fenetre toute noire. Quelqu'un aurait une idee de pourquoi ?
    rect pointe sur le tableau contenant les points, cpy contient une copie de mon image sur laquelle je travaille et count=8.

    Merci.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 12
    Par défaut
    Tu es parti de la fonction drawSquare, je suppose si tu pouvais mettre en peu plus de code, pour savoir comment tu traite ta sequence.

    Un chose qui peut être intéressante dans openCv c'est de transformer ta séquence de point en vector plus facile a utiliser.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Détection de rectangle en utilisant la transformée de Hough
    Par sdawil dans le forum Traitement d'images
    Réponses: 7
    Dernier message: 30/11/2011, 10h30
  2. Détection de rectangles dans une image de contours (image binaire)
    Par Chatbour dans le forum Traitement d'images
    Réponses: 9
    Dernier message: 09/06/2010, 16h06
  3. Souci de détection de rectangle
    Par bastien71 dans le forum OpenCV
    Réponses: 0
    Dernier message: 19/05/2009, 11h10
  4. Détection de collisions entre rectangles
    Par davcha dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 13/04/2006, 18h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo