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

C++ Discussion :

déterminer RGB des couleurs dans un intervalle entre rouge et vert


Sujet :

C++

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2008
    Messages : 354
    Points : 139
    Points
    139
    Par défaut déterminer RGB des couleurs dans un intervalle entre rouge et vert
    Bonjour,
    Je veux déterminer es RGB d'un vecteur du couleur(entre deux couleurs différents). EN fait par exmple je choisit la couleur rouge et la couleur verts. je cherche le RGB de 20 couleurs entre le rouge et le bleu. Normalement j'aurais une succession du couleur entre rouge et vert.
    Merci

  2. #2
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    la notation RGB d'une couleur est un triplet de valeurs: la quantité de rouge (R pour red), de vert (G pour green) et de bleu (B pour blue) qui la compose.
    Chaque composante est un nombre indépendant des deux autres.

    Il y a plusieurs variantes, mais toutes ont en commun d'avoir un intervalle de valeur pour ces composantes.
    En RGB 24bits, chaque composante correspond à un nombre entre 0 et 255, ce qui correspond normalement à un unsigned char.

    Si tu disposes de deux couleurs, il suffit de choisir ta fonction d'interpolation.
    La plus simple est d'interpoler chaque composante indépendement.

    Si tes couleurs sont le rouge (255, 0, 0) et le vert (0, 255, 0), et que tu veux une seule couleur intermédiaire, comment détermines-tu que c'est (127, 127, 0)?
    Et si tu veux trois intermédiaires, comment détermines tu que la première intermédiaire est (191, 63, 0)?
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2008
    Messages : 354
    Points : 139
    Points
    139
    Par défaut
    Ce que je cherche est les RGB des couleurs de l'image ci joint.
    Nom : test_colored_point.png
Affichages : 1593
Taille : 8,0 Ko

  4. #4
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Celles-ci précisément?
    Utilise un outil pour trouver les codes valeurs des couleurs. N'importe quel outil peut faire l'affaire: GIMP, paint (peut-être), le color picker de firefox, etc

    Puis, fais en une liste, et sers-t'en.

    Ou alors, comprends comment les déterminer. Pour cela, réponds aux questions que je t'ai posé tout à l'heure.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2008
    Messages : 354
    Points : 139
    Points
    139
    Par défaut
    Je veux chercher ça algorithmiquement. EN fait je veux déterminer les RGB de ces couleurs. Dans ce acs on a 30 couleurs parfois, j'ai besoin de déterminer 50 couleurs, ça dépend du cas.
    Est ce que vous pouvez m'aider à trouver les RGB de ces points

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Tu ouvres ton image sous paint et tu utilises l'outil pour sélectionner une couleur.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  7. #7
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    Il n'y a pas de correspondance bijective directe entre l'espace de couleur RGB et la longueur d'onde d'une hypothétique lumière correspondante. C'est une approximation. Le spectre de la plupart des couleurs RGB correspondent à une combinaison de longueurs d'onde.

    Si l'objectif est simplement de faire joli, alors une interpolation de la teinte de la couleur exprimée en HSV/HSL est sans doute plus aisé.

  8. #8
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    J'imagine que puisque tu nous as répondu, tu sais ce qu'est une interpolation.
    Soit parce que tu le savais déjà, soit parce que tu as cherché.

    Ce que tu cherches est une interpolation, a priori linéaire, entre deux couleurs.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2008
    Messages : 354
    Points : 139
    Points
    139
    Par défaut
    Bonjour,
    Merci pour votre réponse, si je considère le HSV comme vous m'avez précisez.
    Citation Envoyé par Matt_Houston Voir le message
    Il n'y a pas de correspondance bijective directe entre l'espace de couleur RGB et la longueur d'onde d'une hypothétique lumière correspondante. C'est une approximation. Le spectre de la plupart des couleurs RGB correspondent à une combinaison de longueurs d'onde.

    Si l'objectif est simplement de faire joli, alors une interpolation de la teinte de la couleur exprimée en HSV/HSL est sans doute plus aisé.
    Donc ce que je cherche par exemple c'est la partie entre le rouge et le vert donc d'après ce lien je cherche les couleurs qui ont un 0<H<120.
    Je veux garder la même intensité et la même saturation pour tous les palges des couleurs. Ce qui fait je prends par exemple S=0.8 et I=125
    DOnc si je cherche le RGB d'après l'équation qui se trouve dans ce lien ce lien, j'obtiends
    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
     
       float S=0.8;
        float V=0.5;
       int x;
         float R,G,B;
         //compute the chroma
         float c=S*V;
         float val;
         int hue;
        for (x = 1; x < 120; x=x+4) {
            hue=x/60;
            val=c*(1-qAbs(hue%2-1));
            if(hue<=1){
                R=c;
            G=val;
            B=0;}
            else if(hue<=2){R=val;G=c;B=0;}
    En utilisant ce code Malheureusement, j'ai pas trouvé un spectre du couleur

  10. #10
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Citation Envoyé par moooona Voir le message
    Bonjour,
    Je veux déterminer es RGB d'un vecteur du couleur(entre deux couleurs différents). EN fait par exmple je choisit la couleur rouge et la couleur verts. je cherche le RGB de 20 couleurs entre le rouge et le bleu. Normalement j'aurais une succession du couleur entre rouge et vert.
    Merci
    la gestion des couleurs, palettes, espaces chromatiques c'est géré soit par une bibliothéque spécialisée soit par les API win32 notamment sous Windows.
    Donc quelle biblio, quel OS ?
    Le fil de discussion c'est le C++ ici

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2008
    Messages : 354
    Points : 139
    Points
    139
    Par défaut
    J'utilise windows7 avec Visual Studio en C++.
    En fait je veux avoir un spectre du couleur entre deux couleurs en utilisant HSL puis la transformer en RGB

  12. #12
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Si je me fie à ta ligne val=c*(1-qAbs(hue%2-1));, tu utilises Qt qui a la classe QColor ayant tout le nécessaire pour passer de l'espace RGB à l'espace HSV et inversement.
    Tout ce qu'il te reste à faire, comme il a déjà été dit, c'est créer N valeurs équitablement réparties dans un intervalle.

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2008
    Messages : 354
    Points : 139
    Points
    139
    Par défaut
    Exactement, mon problème comment je peux créer N valeurs équitablement réparties dans un intervalle en utilisant >HSL

  14. #14
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    Comme pour n'importe quelle interpolation, en rapportant l'intervalle [min, max] sur [0, 1] et inversement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // generate N values, one in each 1 / N step
    for (unsigned int i = 0; i < N; ++i) {
        const double t = double(i) / (N - 1); // t in [0..1]
     
        const double result = min + interp(t) * (max - min);
     
        // ...
    }

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2008
    Messages : 354
    Points : 139
    Points
    139
    Par défaut
    Merci beaucoup pur votre réponse, result ça concerne le H c'est ça normalement?, pour la lumionisté je mets quoi?, c'est quoi les autres valeurs?
    QColor prend comme paramètre (r,g,b), comment je peux avoir les RGB à partir du HSL en utilisant Qcalor.
    Je vous remercie énormément pour votre aide

  16. #16
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    Tout dépend de la manière dont tu sélectionnes tes triplets RGB en amont. Tu devras peut être également calculer un compromis pour la valeur et la saturation afin de respecter une certaine continuité mais c'est l'interpolation de la teinte qui drive le tout.

    Attention, il y a deux chemins possibles pour interpoler la valeur de teinte. Je prends un exemple : entre 350 et 20 on peut faire 350, 0, 10, 20 ou bien 350, 340, 330.. 40, 30, 20.

    Pour les détails techniques, consulte le lien mentionné par Winjerome, tout y est et tu peux pratiquement tout faire avec un QColor.

Discussions similaires

  1. des couleurs dans un TMenuItem ???
    Par OutOfRange dans le forum Composants VCL
    Réponses: 11
    Dernier message: 30/05/2014, 18h36
  2. connaitre les parametres RGB des couleurs
    Par zidenne dans le forum Delphi
    Réponses: 1
    Dernier message: 14/06/2006, 10h17
  3. Non impression des couleurs dans le tableau.
    Par sebduduf dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 27/07/2005, 16h13
  4. [CR9] lenteur mise en forme des couleurs dans expert diagram
    Par cdu dans le forum SAP Crystal Reports
    Réponses: 6
    Dernier message: 20/04/2005, 08h48
  5. [CR 8.5] Graphique : choix des couleurs dans camembert ?
    Par kikidrome dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 22/03/2005, 09h17

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