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 :

Enveloppe convexe : ConvexHull


Sujet :

OpenCV

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 95
    Points : 62
    Points
    62
    Par défaut Enveloppe convexe : ConvexHull
    bonjour à tous,

    Je cherche à dessiner le résultat de l'enveloppe convexe d'un blob avec OpenCV. Je ne sais pas si quelqu'un a déjà utilisé les fonctions cvConvexHull ?

    Merci pour votre aide

  2. #2
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1
    Points : 3
    Points
    3
    Par défaut dessain du polygone
    Moi j'ai utilisé la fonction cvconvexhull2 pour dessiner.
    Voila le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    #include <iostream>
    #include <cv.h>
    #include <highgui.h>
    using namespace std;
     
    int main()
    {  IplImage *img=cvLoadImage(votre image);
       IplImage *image ;
        CvMemStorage* storage=cvCreateMemStorage();
        int i, count = rand()%100 + 1, hullcount;
           CvPoint pt0;
           CvSeq* ptseq = cvCreateSeq( CV_SEQ_KIND_GENERIC|CV_32SC2,sizeof(CvContour),sizeof(CvPoint),storage );
           CvSeq* hull;
           for( i = 0; i < count; i++ )
           { pt0.x = rand() % (img->width/2) + img->width/4;
             pt0.y = rand() % (img->height/2) + img->height/4;
            cvSeqPush( ptseq, &pt0 );}
     IplImage*    g_gray = NULL;
    int        g_thresh = 100;
    CvMemStorage*     g_storage = NULL;
    CvMemStorage* g=NULL ;
     
         if( g_storage == NULL ){
                    g_gray = cvCreateImage( cvGetSize( img ), 8, 1 );
                    g_storage = cvCreateMemStorage(0);
            } else {
                    cvClearMemStorage( g_storage );
            }
     
            CvSeq* contours =0;
            cvCvtColor( img, g_gray, CV_BGR2GRAY );
            cvThreshold( g_gray, g_gray, g_thresh, 255, CV_THRESH_BINARY );
            cvFindContours( g_gray, g_storage, &contours );
            // hull = cvConvexHull2( contours, 0, CV_CLOCKWISE, 0 );
             CvSeq  *li=cvConvexityDefects(contours,hull,g) ;
              for(int i=0;i<li->total;i++)
             {CvPoint* q = (CvPoint*)cvGetSeqElem ( contours, i );
                  int  k=q->x ;
                   int v=q->y ;
                 CvScalar pix=cvGet2D(img,v,k) ;
                    pix.val[0]=0 ;
                   pix.val[1]=0;
                    pix.val[2]=255 ;
                   cvSet2D(img,v,k,pix);
                     }
     
     
     
             hullcount = hull->total;
     
              pt0 = **CV_GET_SEQ_ELEM( CvPoint*, hull, hullcount - 1 );
             for( i = 0; i < hullcount; i++ )
             {  CvPoint pt = **CV_GET_SEQ_ELEM( CvPoint*, hull, i );
                cvLine( img, pt0, pt, CV_RGB( 0, 255, 0 ));
                   pt0 = pt; }
                    cvNamedWindow("ma fan",CV_WINDOW_AUTOSIZE);
     
          cvShowImage("ma fan",img);
     
          cvWaitKey(0);
          cvDestroyAllWindows();
          cvReleaseImage(&img);
    }
    J’espère que je vous ai répondu.
    Bon courage.

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

Discussions similaires

  1. Enveloppe convexe : quel algo
    Par zenux dans le forum Développement 2D, 3D et Jeux
    Réponses: 6
    Dernier message: 17/02/2008, 18h54
  2. Enveloppe convexe masque
    Par coolzy dans le forum Images
    Réponses: 7
    Dernier message: 14/05/2007, 16h33
  3. Enveloppe Convexe 3D
    Par ToTo13 dans le forum 3D
    Réponses: 3
    Dernier message: 02/05/2007, 16h19
  4. enveloppe convexe
    Par hamdouch dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 15/04/2006, 17h37
  5. Calcul d'enveloppe convexe + triangulation
    Par Celelibi dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 24/11/2005, 18h02

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