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 :

Résultats de cvApproxPoly


Sujet :

OpenCV

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 97
    Par défaut Résultats de cvApproxPoly
    Bonjour,

    J'utilise la fonction cvApproxPoly permettantde "polygonariser" une forme, c'est à dire obtenir les contours de la forme, mais "simplifies" en polygones. La fonction fait ce que je souhaite, mais j'aurais besoin de récupérer les équations des différents segments du polygone (ou bien d autres information me permettant de calculer ces equations.

    Pour l instant, j ai seulement reussit a dessinner le polygone via la fonction cvDrawContour.

    Au pire, je peux toujours dessinner dans une image vide le polygone et ensuite parcourir l image afin de etrouver les positions des pixels du polygone, mais cela me semble long, couteux et peut etre inutile s il y a un moyen de recuperer ces infos !!!

    Merci a vous

  2. #2
    Invité
    Invité(e)
    Par défaut
    Voici deux indications.

    • Si ce n'est pas trop tard, je te conseille de migrer vers l'interface C++ de OpenCV, au lieu de l'interface C. La fonction approxPolyDP renvoie alors un vecteur de CvPoint ce qui est bien plus simple que l'obscur CvSeq...
    • Sinon, il faut utiliser un CvSeqReader comme dans l'exemple ci-dessous. D'une façon générale les séquences doivent être lues selon l'exemple expliqué sur cette page. Le plus dur est de trouver (ou de deviner) quel est le type sous-jacent des éléments de la séquence : pour cvApproxPoly il semble que ce soit une séquence de CvPoint qui soit retournée.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    // Approximation polygonale
    CvSeq * polygon = cvApproxPoly(contour, sizeof(CvContour), storage,
                                     CV_POLY_APPROX_DP, perimeter*0.05, 0);
     
    // Récupérer les segments de l'approximation
    CvSeqReader reader;
    cvStartReadSeq (polygon, &reader);
    for (int ipt = 0; ipt < polygon->total; ipt++)
    {
            CvPoint pt;
            CV_READ_SEQ_ELEM (pt, reader);
     
            // utiliser pt...
    }
    Quant à CvMemStorage, c'est un container non documenté pour la gestion de la durée de vie des objets, et ce serait une mauvaise idée d'aller farfouiller à l'intérieur à mon avis...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 25
    Par défaut
    oups oui bien vu

  4. #4
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 97
    Par défaut
    Merci a vous deux !

    Ton code fonctionne parfaitement, je n en demandais pas tant, le sujet est donc plusque resolu !!!

    merci

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

Discussions similaires

  1. Le résultat de Print ne s'affiche pas...
    Par Red Bull dans le forum Langage
    Réponses: 9
    Dernier message: 15/06/2006, 18h56
  2. [requête]donner résultat que si + de n lignes...
    Par Titia765 dans le forum Langage SQL
    Réponses: 12
    Dernier message: 10/06/2003, 12h02
  3. Réponses: 3
    Dernier message: 18/05/2003, 00h16
  4. Réponses: 4
    Dernier message: 28/09/2002, 00h00
  5. [BDD] Enregistrer le résultat d'une requête
    Par Mowgly dans le forum C++Builder
    Réponses: 5
    Dernier message: 19/06/2002, 15h26

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