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

2D Java Discussion :

Afficher une image en teinte


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 185
    Par défaut Afficher une image en teinte
    Bonjour,

    je suis censée faire un programme qui rend une image en luminance teinte et saturation en utilisant des fonctions mathématiques. Pour la luminance et la saturation j'ai pas eu de prb, par contre en teinte ça affiche une image avec des couleurs bizzares. Je sais que le prb est un prb d'affichage parceque les calculs sont bien juste. J'aimerai bien que vous m'aidiez.

    Puis enfaite aprés avoir fait ça je suis censée reconstruite l'image en teinte pour avoir une image presque identique à l'image de départ vu que aprés la teinte j'ai l'image en presque noir et blanc en utilisant une charte de couleur, un genre de reconstruction ???
    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
     
     
    public void afficheimageteinte(){
             int width = monImage.getWidth();
             int height = monImage.getHeight();
            for(int i=0; i<height; i++){
     
                    for(int j=0; j<width; j++){
     
                       Color c = new Color(monImage.getRGB(j, i));
     
                      //U
                       int red1 = ((int)(c.getRed()* (-0.14713) ));
                       int blue1 = (int)(c.getBlue()* (0.436));
                       int green1 = ((int)(c.getGreen()*(-0.28886)));
                       double sommeU=red1+green1+blue1; //RESULTAT U
     
                       // V
                       int red2 = ((int)(c.getRed() * 0.615));
                       int green2 = ((int)(c.getGreen() * (-0.51498)));
                       int blue2 = ((int)(c.getBlue() * (-0.10001)));
                       double sommeV=red2+green2+blue2; //RESULTAT V
     
     
                      double teinte = 0;
                       if(sommeV==0){
                           if(sommeU>0)
                               teinte=0;
                           else
                               teinte =180;}
                           else if(sommeV!=0)
                         teinte =180*(Math.atan2(sommeV,sommeU))/3.141592;
     
     
                      Color newColor = new Color( (int) teinte);
     
                     monImage.setRGB(j,i,newColor.getRGB());
                    repaint();
                    }
                 }
        }

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 097
    Par défaut
    Comme le constructeur le dit, il attends un entier qui contient le RGB. Toi tu passe un entier qui n'a rien avoir d'ou des "couleurs bizarres".

    Il doit donc te manquer une ou des opération pour passer de ta teinte au RGB.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 185
    Par défaut
    Bonjour,

    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
    public void afficheimageteinte(){
            //monImage = hImg;
            //repaint();
     
             int width = monImage.getWidth();
             int height = monImage.getHeight();
             double max = Double.MIN_VALUE;
             double min = Double.MAX_VALUE;
            for(int i=0; i<height; i++){
     
                    for(int j=0; j<width; j++){
     
                       Color c = new Color(monImage.getRGB(j, i));
     
                      //U
                       int red1 = ((int)(c.getRed()* (-0.14713) ));
                       int green1 = ((int)(c.getGreen()*(-0.28886)));
                       int blue1 = (int)(c.getBlue()* (0.436));
                       double sommeU=red1+green1+blue1; //RESULTAT U
     
                       // V
                       int red2 = ((int)(c.getRed() * 0.615));
                       int green2 = ((int)(c.getGreen() * (-0.51498)));
                       int blue2 = ((int)(c.getBlue() * (-0.10001)));
                       double sommeV=red2+green2+blue2; //RESULTAT V
     
     
                      double teinte = 0;
                       if(sommeV==0){
                           if(sommeU>0)
                               teinte=0;
                           else
                               teinte =180;}
                      else if (sommeV!=0)
                           teinte =180*(Math.atan2(sommeV,sommeU))/Math.PI;
     
                       if(max < teinte)
                        max = teinte;
                       if(min > teinte)
                        min = teinte;
     
                      teinte += 180;
                      int gr = (int)(teinte*255.0/360.0);
     
                      Color newColor = new Color(gr, gr, gr);
     
                     monImage.setRGB(j,i,newColor.getRGB());
     
                    }
                 }
                 repaint();
        }


    voilà mon code pouvez vous m'aider parceque je suis vraiment bloquée là, j'ai essayer une méthode qui affiche l'image en RGB mais mon encadreur à dit qu'elle est fausse, je suis censée à partir d'une charte de couleur afficher l'image qui est en noir et blanc en couleur

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Et c'est quoi cette "charte de couleur"? un liste de clé/valeur donnant la valeur RGB pour chaque niveau de gris?
    Une image saturée donnant la teinte de chaque point, le niveau de gris servant d'intensité?
    Autre chose?

  5. #5
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 185
    Par défaut
    Nom : Capture.PNG
Affichages : 146
Taille : 1,1 Ko

    C'est ça la charte de couleur

  6. #6
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 185
    Par défaut
    en faite c'est plutot une liste de valeur donnant la valeur RGB pour chaque niveau de gris

  7. #7
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 097
    Par défaut
    @Tchize_: Tu as surement déjà compris, il parle de transformation RGB (noir/blanc) vers HSV/HSB (je ne sais plus) puis retransformation vers RGB. Pour "colorer" le n/b genre sepia (je présume du moins).

    https://fr.wikipedia.org/wiki/Teinte_Saturation_Valeur
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. [VB.NET] afficher une image stockée dans une table
    Par matonfire dans le forum ASP.NET
    Réponses: 4
    Dernier message: 19/03/2004, 11h21
  2. Afficher une image JPG qui se trouve dans une bdd
    Par Harry dans le forum Bases de données
    Réponses: 6
    Dernier message: 27/02/2004, 10h51
  3. Charger et afficher une image jpg avec les mfc
    Par glop - pas glop dans le forum MFC
    Réponses: 3
    Dernier message: 11/02/2004, 18h59
  4. Réponses: 2
    Dernier message: 04/02/2004, 22h32
  5. Afficher une image sans passer par les textures
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/05/2003, 19h13

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