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

Qt Discussion :

Lire et afficher une image en Qt


Sujet :

Qt

  1. #101
    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
    Pour afficher les valeurs de mes pixels je fais une boucle autour de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
          float f;
             in >> f;
        QMessageBox::information(this, tr("Image Viewer"), tr("la valeur du pixel est%1.").arg(f)) ;
    Ben puis que les floats sont codes sur 32 bits donc les valeurs des pixels sont comprises entre 0 et 2^32??si je ne me trompe en tout cas mes pixels ont des valeurs tres grandes!!!
    Je pense pas qu'il est une convertion faite car ce sont les valeurs que je lis directement du Header!!

  2. #102
    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
    tu peut nous fournir ton image?

  3. #103
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Par défaut
    un int et un float sa fait tout les deux 32 bits mais ca ne represente pas du tout la meme chose.
    Vous voulez participer aux Tutoriels, FAQ ou Traductions et faire partie de l'équipe Qt de Developpez.
    N'hésitez pas à me contacter par MP.

  4. #104
    Membre éprouvé Avatar de sardik
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 135
    Par défaut
    Il faut que tu change la précision de ton affichage. Il doit y avoir un argument à donner à la méthode arg() pour régler le nombre de chiffres significatifs.

  5. #105
    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
    comment je peux joindre une image en fait un fichier??

  6. #106
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Par défaut
    Quand tu fais repondre a la discution tu as en dessous du cadre pour repondre un bouton gerer les pieces jointe.
    Vous voulez participer aux Tutoriels, FAQ ou Traductions et faire partie de l'équipe Qt de Developpez.
    N'hésitez pas à me contacter par MP.

  7. #107
    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
    j'ai peur de ne pouvoir vous donner une image car dans les extensions valides l'extension de mon fichier n'y figure pas et j'ai essayé mais ça marche pas.
    Si ya un autre moyen de vous faire parvenir cette image je suis preneur;merci

  8. #108
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Par défaut
    tu peux pas faire un .zip ?
    Vous voulez participer aux Tutoriels, FAQ ou Traductions et faire partie de l'équipe Qt de Developpez.
    N'hésitez pas à me contacter par MP.

  9. #109
    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
    Désolé mais l'image ne peut pas etre charger car des problemes liés à la marque de securité.Encore desolé

  10. #110
    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
    Citation Envoyé par lisco Voir le message
    Désolé mais l'image ne peut pas etre charger car des problemes liés à la marque de securité.Encore desolé
    ? c'est à dire? tu ne peut pas nous la filler?

  11. #111
    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
    Pas que je peux pas la filer mais quand je la joints ça me mets echec contacter l'administrateur car ya des problemes de marque de securité!!!

  12. #112
    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
    Citation Envoyé par lisco Voir le message
    Pas que je peux pas la filer mais quand je la joints ça me mets echec contacter l'administrateur car ya des problemes de marque de securité!!!
    elle doit être trop grande. Tu peut passer par un truc comme free par exemple
    http://dl.free.fr/

  13. #113
    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
    Merci Yan pour le lien.Bon voila je vous passe une image tout en espérant cette fois ci que nous puissons resoudre le probléme.
    et encore merci à tous.


    http://dl.free.fr/t3SMCiLc8

  14. #114
    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
    on t'avais bien tout donné.
    Le dernier problème est que les valeurs min,max donné en entête sont fausse.

    Voici ce que j'ai fait
    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    #include <QtGui>
    #include <limits>
     
    struct FxdHeader
    {
    	qint32  FileMagic;        // 4 bytes that identiy the file format
    	qint32  NbColumns;        // number of columns in the image
    	qint32  NbRows;           // number of rows in the image
    	qint32  NbFrames;         // number of frames in the image
    	qint32  PixelType;        // type of the pixel in the file (one of the IMG_STORAGE_* constant)
    	qint32  QuantLevels;      // number of quantization levels
    	float MaxSignalLevel;   // maximum value in the image
    	float MinSignalLevel;   // minimum value in the image
    	qint32  CommentLength;    // length of the comment len
    	char  Reserved[92];     // reserved data to make the header size to 128 bytes
    } ;
    const unsigned int fxHeaderSize = 128;
     
    #include "main.moc"
    int main(int argc, char **argv) {
        QApplication app(argc, argv);
     
    	QFile fin("C:/Documents and Settings/VY/Bureau/Image_float/Image_float.fxd");
    	fin.open(QIODevice::ReadOnly);
     
    	FxdHeader fxd;
     
    	QDataStream in(&fin);//Lecture des donnees contenues dans le fichier.
        in.setByteOrder(QDataStream::LittleEndian) ;
    	//lecture de l'entête
    	in	>> fxd.FileMagic 
    		>> fxd.NbColumns
    		>> fxd.NbRows
    		>> fxd.NbFrames       
    		>> fxd.PixelType      
    		>> fxd.QuantLevels    
    		>> fxd.MaxSignalLevel 
    		>> fxd.MinSignalLevel
    		>> fxd.CommentLength;  
    	//position debut d'image
    	fin.seek(fxHeaderSize + fxd.CommentLength) ;
     
    	//lecture de l'image dans un buffer temporaire
    	//recherche du min max
    	unsigned int bufferSize = fxd.NbColumns * fxd.NbRows;
    	float min =  std::numeric_limits<float>::max();;
    	float max =  - std::numeric_limits<float>::max();
    	std::vector<float> imageBuffer(bufferSize);
    	for ( int i = 0; i < bufferSize; ++i)
    	{
    		float f;
    		in >> f;
    		if (f >max) max = f;
    		if (f <min) min = f;
    		imageBuffer[i] =f;
    	}
     
     
    	//convertion vers une QImage
    	QImage img(fxd.NbColumns , fxd.NbRows,QImage::Format_RGB32);
    	for (int y = 0; y < fxd.NbRows; y++)
                     for (int x = 0; x < fxd.NbColumns; x++)
    		 {
     
    			 //simple règle de trois
    			 unsigned char  pixel = 255 
    				 * 
    				 (imageBuffer[y*fxd.NbColumns + x] - min) 
    				 / 
    				 (max - min);
     
    			 img.setPixel(x , y , qRgb( pixel , pixel, pixel ));
    		  }
     
     
    //affiche de l'image
        QScrollArea w;
    	{
    		QLabel *label = new QLabel(&w);
    		label->setPixmap(QPixmap::fromImage(img).scaled(800,600,Qt::KeepAspectRatio));
    		w.setWidget(label);
    	}
        w.show();
        return app.exec();
    }
    [edit] invertion des deux for[edit]

    J'ai utiliser un buffer temporaire pour stocker l'image et retrouver le min/max.
    J'ai converti les valeur entre 0 et 255 par une simple règles de trois. Mais il en existe plein d'autre bien plus adapté à tes images ( c'est une radio d'un crane?).

  15. #115
    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 Yan c'est bien une radio d'un crane. Mais moi j'arrive pas à avoir une image nette avec le meme code j'ai fait que l'inclure dans mon IHM mais j'ai plusieurs morceaux qui se ressemblent qui se supperposent et avec pleins de rayures noirs et blancs

    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
      file.seek(128 + CommentLength) ;     //Je me positionne a  la fin des commentaires et au debut des pixels de l'image pour faire la lecture.
     
     
     
            unsigned int bufferSize = columns * rows;
            float min =  std::numeric_limits<float>::min();
            float max =  - std::numeric_limits<float>::max();
            std::vector<float> imageBuffer(bufferSize);
            for ( int i = 0; i < bufferSize; ++i)
            {
                    float f;
                    in >> f;
                    if (f >max) max = f;
                    if (f <min) min = f;
                    imageBuffer[i] =f;
            }
     
     
            //convertion vers une QImage
            QImage img(columns ,rows,QImage::Format_RGB32);
            for (int x = 0; x < columns; x++)
            {
                     for (int y = 0; y < rows; y++)
                     {
     
                             //simple règle de trois
                             unsigned char  pixel = 255
                                     *
                                     (imageBuffer[y*columns + x] - min)
                                     /
                                     (max - min);
     
                             img.setPixel(x , y , qRgb( pixel , pixel, pixel ));
                      }
     
            }
     
     
            ui->ZoneImage->setPixmap(QPixmap::fromImage(img).scaled(1000,800,Qt::KeepAspectRatio));
    J'ai absolument rien changé , je sais pas si tu as reussis à l'afficher entierement et correctement!!!

  16. #116
    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
    as tu essayer mon code pour commencer?
    pour voir si tu as le même comportement que moi?
    ps : j'ai modifier le code

  17. #117
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Par défaut
    C'est surement parce que tu as utilisé le code de yan avec les boucles for invercées. Regarde le code qu'il a edité cela devrait mieux marcher.
    Vous voulez participer aux Tutoriels, FAQ ou Traductions et faire partie de l'équipe Qt de Developpez.
    N'hésitez pas à me contacter par MP.

  18. #118
    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
    Citation Envoyé par superjaja Voir le message
    C'est surement parce que tu as utilisé le code de yan avec les boucles for invercées. Regarde le code qu'il a edité cela devrait mieux marcher.
    non non, cela ne devrais rien changé. C'ets juste que c'est performant que la première boucle est sur les lignes.

  19. #119
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Par défaut
    Citation Envoyé par yan Voir le message
    non non, cela ne devrais rien changé. C'ets juste que c'est performant que la première boucle est sur les lignes.
    Je croyais que tu avais precedement inverser le X et le Y. J'avais mal compris tu as juste inversé les boucle OK. Desolé.

    Sinon je comprends pas trop pour les performances car on fait le meme nombre de tour de boucle dans tout les cas non ?
    Vous voulez participer aux Tutoriels, FAQ ou Traductions et faire partie de l'équipe Qt de Developpez.
    N'hésitez pas à me contacter par MP.

  20. #120
    Membre éprouvé Avatar de sardik
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 135
    Par défaut
    C'est plus performant par rapport à la façon dont sont agencées les données en mémoire.

    Les colonnes sont alignées en mémoire, c'est alors plus rapide de parcourir toute les colonnes d'une ligne en 1er avant de passer à la suivante plutôt que l'inverse.

Discussions similaires

  1. Lire et afficher une image
    Par pretyy dans le forum Débuter
    Réponses: 6
    Dernier message: 01/02/2012, 12h22
  2. Lire et afficher une image au format pgm
    Par didi_di dans le forum C++
    Réponses: 4
    Dernier message: 17/12/2009, 15h19
  3. Lire et afficher une image 3D (RGB)
    Par 77Camille dans le forum MATLAB
    Réponses: 1
    Dernier message: 06/06/2007, 12h09
  4. Lire et afficher une image (format TIFF)
    Par nuans dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 30/04/2007, 15h33
  5. [Débutante]Lire et afficher une image IRM sous C++ builder
    Par larimoise dans le forum C++Builder
    Réponses: 13
    Dernier message: 04/12/2006, 08h21

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