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 :

Traduire un unsigned short* en image Qt


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut Traduire un unsigned short* en image Qt
    Bonjour,

    Je reçois une séquence d'images de taille fixe (320 par 240) sous forme d'unsigned short* (vector<unsigned short> en réalité mais bon).

    Je cherche via QImage à pouvoir afficher les images les unes après les autres... mais je ne vois pas trop comment lui faire comprendre ce que je veux.

    (oui, l'image est en niveaux de gris)

    Quelqu'un aurait-il un indice ?

    (je risque d'afficher l'image résultante dans un QLabel qui sera lui mis dans un QGraphicsView probablement)


  2. #2
    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 une règle de trois en partant du principe que 255 = 65535 ?
    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.

  3. #3
    Membre expérimenté

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2006
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 281
    Par défaut
    Citation Envoyé par superjaja Voir le message
    Tu peux pas faire une règle de trois en partant du principe que 255 = 65535 ?
    Ca marche plutôt bien en général.

  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
    Pas mieux que LeGars.

    Par contre je voie pas l'intérêt d'utiliser OpenCV ou sdl ici.

    Transformer une image 16 bits en image visible c'est rien du tout. Surtout, vue la taille de l'image ca va pas prendre de temps. A choisir entre une image indexé sur 8 bits ou directement une image RGB. Pour transformer ton pixel 16bits en RGB, tu peut utiliser un qlineargradientl. Ça interpolera directement les couleurs. Ça marche bien


    Au lieux de mettre un QLabel dans un QGraphicsWidget, utilise un
    qgraphicspixmapitem

  5. #5
    Membre expérimenté

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2006
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 281
    Par défaut
    Citation Envoyé par yan Voir le message
    Par contre je voie pas l'intérêt d'utiliser OpenCV ou sdl ici.
    C'est une question de débit. J'ai bossé sur un projet ou le rafraichissement était relativement rapide (env 150/s) avec des images de tailles moyennes (1024x512) et l'affichage via Qt ralentissait tout.
    D'où l'utilisation via SDL puis OpenCv pour le détourage automatique...
    C'est juste au cas où

  6. #6
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Bah en fait, l'idée c'est quand même d'être assez rapide si possible car ce que j'écris pourrait à terme être utilisé en temps réel.

    Pour la règle de trois hmm ça me gêne un peu. Je lui filerais donc un unsigned char* au final ? On y perd.

    Mon seul soucis, c'est actuellement de trouver "la bonne classe (C) (TM)" qui prendrait mon unsigned short*. Bref, c'est vraiment de trouver l'endroit par lequel je peux introduire mes données images brutes de chez brutes dans Qt.

    Par contre, je ne vois pas trop pour QLinearGradient, tu pourrais donner un exemple ? Elle n'a pas l'air faite pour ça (ou alors j'ai trop lu en diagonale ).

    Sinon, LeGars, ta solution marcherait mais c'est je pense un poil trop lent, j'essayerai de bencher ça ASAP. Un traitement bas niveau sans modifier la QImage pour ensuite faire le boulot, ça serait bien.

    Bref, n'hésitez pas à illustrer ou donner des exemples, ça m'aiderait pas mal.

    PS : on utilise Vigra

  7. #7
    Membre expérimenté

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2006
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 281
    Par défaut
    Si le débit n'est pas trop important, tu peux utiliser utiliser un QImage en accédant directement aux pixels via un scanLine. Comme la taille est connue, c'est assez simple :

    A l'initialisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // Creation de l'image
    QImage m_img(320, 240, QImage::Format_Indexed8);
    // Table de couleur
    QVector<QRgb> m_colors;
    for(int i = 0; i < 255; i++)
       m_colors.append(qRgb(i, i, i));
    m_img.setColorTable(m_colors);
    A chaque nouvelle image :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    for(int y = 0; y < 240; y++)
    {
       uchar *scanL = m_img.scanLine(y);
       for(int x = 0; x < 320; x++)
       {
          *scanL++ = data[(y * 320) + x];
       }
    }
    C'est de mémoire, mais en gros ça serait une idée...

    Si le débit est trop rapide, Qt n'arrivera pas à suivre.
    Une solution mixant SDL et Qt sera excellente. Et si besoin de traitement d'image à la volée, le trio gagnant : OpenCv + SDL + Qt.

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

Discussions similaires

  1. afficher de unsigned short en hexa?
    Par lykim1982 dans le forum C
    Réponses: 2
    Dernier message: 23/05/2007, 17h51
  2. convertir unsigned short
    Par jonny dans le forum C
    Réponses: 7
    Dernier message: 06/06/2006, 15h46
  3. [MFC] pb de conversion CString en unsigned short
    Par kanabzh29 dans le forum MFC
    Réponses: 5
    Dernier message: 04/05/2006, 10h29
  4. Réponses: 5
    Dernier message: 22/03/2006, 13h25
  5. Unsigned Short
    Par Higestromm dans le forum Langage
    Réponses: 2
    Dernier message: 21/02/2006, 17h30

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