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

Discussion :

qwt et graphique

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 237
    Par défaut qwt et graphique
    Bonjour, je souhaite tracer l'histogramme d'une image que j'ai deja affichée, mais seulement j'ai un probléme car j'ai des droites de partout qui ne sont pas reliés entre elles, et ça ne fait pas une courbe.Je voudrai faire apparaitre mes points et ensuite les reliés de maniere à avoir une courbe exploitable.Je joins la figure que j'ai obtenu histogr.jpg.
    Voici ma méthode qui me permet de tracer l'histogramme:


    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
    void MaClass::histogramme()
    {
     
        X[i] = pixel ; //vector<double> qui contient tous mes pixels en abcisse
         Y[pixel] = Histo[pixe:] + 1 ;//vector<double> qui le nombre d'apparition de chaque pixel en ordonnée.
     
        plot.setCanvasBackground(QColor(Qt::white));
        plot.setAxisTitle(QwtPlot::xBottom,QString("<u>Valeurs des pixels</u>"));
        plot.setAxisTitle(QwtPlot::yLeft,QString("<u>fréquence d'apparition des pixels</u>"));
        plot.setAxisScale(QwtPlot::xBottom, 0.0, 256.0, 10.0) ;
     
        QwtPlotZoomer* zoomer = new MyZoomer(plot.canvas()) ;
        myCurve.attach(&plot) ;
     
        myCurve.setPen(QPen(Qt::red)) ;
        myCurve.setData(X, Y) ;
     
        plot.replot();
        plot.resize(600, 400) ;
     
    }
    Si quelqu'un peut m'aider svp!!j'en ai besoin!!merci d'avance.
    Images attachées Images attachées  

  2. #2
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 72
    Par défaut
    Salut,
    Que se passe t-il lorsque tu remplaces la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myCurve.setData(X, Y) ;
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myCurve.setData(x.data(),y.data(),x.size());
    Entre outre, j'ai une question: n'as-tu pas de boucle dans la quelle tu remplies tes vecteurs ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 237
    Par défaut
    Oui bien sur j'ai une boucle pour remplir mes vecteurs. Si tu veux X et Y sont des attributs membres de ma classe, en fait là c'est juste un exemple.

    Voici comment je remplit mes vecteurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    for (y = 0; y < iHeight; y++)
            {
                for ( x = 0; x < iWidth; x++)
                {
     
     
                 pixel = 255 * ((image[y * iWidth + x] ) - min) / (max - min) ;
                 X[y * iWidth + x] = pixel;
     
                 Y[pixel] = Histo[pixel] + 1 ;
                }
          }
    Et j'ai fait aussi en changeant le pas , mais j'ai toujours un histogramme tres bizarre, dont je comprends vraiment pas, c'est inexploitable je joins la figure :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myCurve.setData(X.data(), Y.data(), X.size()) ;
    merci d'avance
    Images attachées Images attachées  

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    for (y = 0; y < iHeight; y++)
            {
                for ( x = 0; x < iWidth; x++)
                {
     
     
                 pixel = 255 * ((image[y * iWidth + x] ) - min) / (max - min) ;
                 X[y * iWidth + x] = pixel;
     
                 Y[pixel] = Histo[pixel] + 1 ;
                }
          }
    C'est sensé faire quoi????

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 237
    Par défaut
    Citation Envoyé par yan Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    for (y = 0; y < iHeight; y++)
            {
                for ( x = 0; x < iWidth; x++)
                {
     
     
                 pixel = 255 * ((image[y * iWidth + x] ) - min) / (max - min) ;
     
                 X[y * iWidth + x] = pixel; 
     
                 Y[pixel] = Y[pixel] + 1 ;
                }
          }
    C'est sensé faire quoi????
    1) je stoque mes pixels dans un vector qui représente l'axe des abcisses de mon histogramme. Par definition :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    QVector<double> X ;
    X[y * iWidth + x] = pixel;
    2) ensuite je calcule la fréquence d'apparition des pixels ce qui représente l'axe des ordonnées de mon histogramme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    QVector<double> Y ;
    Y[pixel] = Y[pixel] + 1 ;
    Je pense que l'algo est correcte mais le probléme doit venir de la maniére dont j'utlise qwt???
    merci d'avance

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    ...non. le 1) est faux, pas le 2)

    Pour dessiner une courbe, il te faut un tableau de X pour l'abscisse et un tableau Y pour l'ordonnée. Donc chaque points doit avoir une valeur en X et Y.

    Pourquoi tes tableaux X et Y n'ont pas la même taille????


    Que représente l'axe des abscisses pour un histogramme???

Discussions similaires

  1. Tracer un graphique avec openPTC ou Qwt
    Par tom250908 dans le forum Bibliothèques
    Réponses: 16
    Dernier message: 19/07/2013, 10h11
  2. Formalisation graphique des algorithmes
    Par David R. dans le forum Algorithmes et structures de données
    Réponses: 14
    Dernier message: 08/12/2012, 10h21
  3. [RAVE][DELPHI7] Comment faire un graphique ?
    Par DFANDOR dans le forum Rave
    Réponses: 7
    Dernier message: 06/02/2003, 20h25
  4. Réponses: 10
    Dernier message: 27/08/2002, 23h24

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