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 :

Histogramme Bilineaire d'une image


Sujet :

2D Java

  1. #21
    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
    Merci , Enfaite je voulais pas eclaircir au début parceque je deverais ajouter une charte de couleur à coté de l'histogramme horizontalement, j'allais vous demander l'aide sur ça aussi, par exemple

    Nom : Capture.PNG
Affichages : 170
Taille : 7,1 Ko

    et faire des conditions quand la valeur est 100 c'est rouge ...
    Images attachées Images attachées  

  2. #22
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par YOUHANA Voir le message
    Enfaite je voulais pas eclaircir au début
    C'est pour ça que j'ai parlé de tests... tu le fais juste pour voir ce que ça donne, et ensuite tu l'enlèves.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #23
    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
    Oui merci beaucoupppppppp, pour modifier la couleur de la case par rapport à sa valeur comment poux je faire ça ? Pouvez vous me donner un petit test et moi je finis l'autre

  4. #24
    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
    J'ai ajouté cette condition pour tester en faite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int valeur = (gray + gray2);
    				if (valeur==100){
    					g.setColor(Color.blue);
    				}
    				g.setColor(new Color(valeur, valeur, valeur));
    ça colorie pas la case en bleu qui est egale à 100 soit elle n'existe pas soit mon code est faux ?

  5. #25
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Ne cherche pas à modifier la case après l'avoir dessinée, chercher à modifier la couleur avant.

    Pour l'instant, tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int valeur = /*... une formule */
    g.setColor( new Color( valeur, valeur, valeur ) );
    g.fillRect(/*...*/);
    A là place de ça, tu vas faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    int valeur = /*... une formule */
    Color color = Color.WHITE; // une valeur par défaut (j'ai mis blanc, mais tu mets ce que tu veux)
    if ( valeur>100 ) { // tout ce qui est au-dessus de 100
              color = Color.RED; // par exemple est rouge
    } else if ( valeur > 80 ) { tout ce qui est entre 100 et 80...
              color = COLOR.ORANGE; // par exemple est orange
    ] else if /*... etc. ...*/
    }
    }
    g.setColor( color );
    g.fillRect(/*...*/);

    Citation Envoyé par YOUHANA Voir le message
    J'ai ajouté cette condition pour tester en faite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int valeur = (gray + gray2);
    				if (valeur==100){
    					g.setColor(Color.blue);
    				}
    				g.setColor(new Color(valeur, valeur, valeur));
    ça colorie pas la case en bleu qui est egale à 100 soit elle n'existe pas soit mon code est faux ?
    Ce qui ne va pas, c'est que g.setColor(new Color(valeur, valeur, valeur)); est toujours exécuté et donc ton test valeur==100 ne sert strictement à rien (la couleur bleue est toujours remplacée).
    Il faudrait faire par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int valeur = (gray + gray2);
    if (valeur==100){
        g.setColor(Color.blue);
    }
    else {
        g.setColor(new Color(valeur, valeur, valeur));
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #26
    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
    Oui c'est exactement ce que j'ai essayé de faire mais ça ecrase la grille, je me retrouve avec la grille toute blanche encore une fois

  7. #27
    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
    Non c'es bon !!! c'etais un } qui manque merci bcp je passe en resolu

  8. #28
    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
    Une derniere question je veux afficher la position de la valeur max comment peux-je faire ça svp ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    int pixel = monImage.getRGB(i, j);
    				int gray = ((pixel >> 16) & 0xFF) >> 3;
     
    				int pixel2 = monImage2.getRGB(i, j);
    				int gray2 = ((pixel2 >> 16) & 0xFF) >> 3;
     
    				int valeur = (gray + gray2);
    				max=Math.max(valeur, 0);
    				System.out.println("Valeur max est "+max);
    Deuxieme question est ce qu'il y'a un test que je pourrais faire pour rendre oui si la valeur est binaire sinon non !!!
    cordialement

  9. #29
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Pour calculer, la valeur max de tous les points, il faut calculer la valeur max pour tous les points(!).

    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
    int max=0;
    for (int i = 0; i < largeurImage; i++) {
    			for (int j = 0; j < hauteurImage; j++) {
     
     
    				int pixel = monImage.getRGB(i, j);
    				int gray = ((pixel >> 16) & 0xFF) >> 3;
     
    				int pixel2 = monImage2.getRGB(i, j);
    				int gray2 = ((pixel2 >> 16) & 0xFF) >> 3;
     
    				int valeur = /*...*/;
    
                                    max = Math.max(max, valeur);
    
    				g.setColor(new Color(valeur, valeur, valeur));
     
                                    g.fillRect(i * dim, j * dim,dim, dim); // remplissage (fill)
     
    			} 
    		}
    
    // ici on peut afficher max, c'est la valeur max de tous les points
    Maintenant, où veux-tu afficher ce max ?


    Citation Envoyé par YOUHANA Voir le message
    Deuxieme question est ce qu'il y'a un test que je pourrais faire pour rendre oui si la valeur est binaire sinon non !!!
    Qu'est-ce que tu entends au juste par binaire ? Une valeur s'écrit (ou se représente) avec des symboles appelés chiffres : les chiiffres sont des symboles, qui proviennent d'une liste finie de symboles. La base (b) caractérise entre autres le nombre de symboles de cette liste, et on peut écrire la valeur dans une base données comme étant la somme de puissances de b. La base 2, par exemple, appelée également binaire, permet donc de représenter une valeur avec 2 symboles, usuellement 0 et 1, et une valeur peut s'écrire comme une somme de puissances de 2, la puissance correspondant à la position du chiffre dans la réprésentation (à partir de 0 en partant de la droite). Mais c'est le cas de tout nombre, 0, 1, 42, 123...255... (écrits ici en base 10).
    Une valeur n'est jamais binaire, sa représentation peut l'être.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  10. #30
    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
    D'accord, merci pour ton explication, du coup comment peux je afficher la position du max genre son ( i,j) ? Je veux l'afficher dans la console.
    Cordialement

  11. #31
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Si tu dois afficher les i et j du max, tu ne peux pas procéder par Math.max, mais par if :

    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
     
    int max=-1;
    int imax=-1;
    int jmax=-1;
    for (int i = 0; i < largeurImage; i++) {
    			for (int j = 0; j < hauteurImage; j++) {
     
     
    				int pixel = monImage.getRGB(i, j);
    				int gray = ((pixel >> 16) & 0xFF) >> 3;
     
    				int pixel2 = monImage2.getRGB(i, j);
    				int gray2 = ((pixel2 >> 16) & 0xFF) >> 3;
     
    				int valeur = /*...*/;
     
                                    if ( valeur>max ) {
                                          max = valeur;
                                          imax=i;
                                          jmax=j;
                                    }
     
    				g.setColor(new Color(valeur, valeur, valeur));
     
                                    g.fillRect(i * dim, j * dim,dim, dim); // remplissage (fill)
     
    			} 
    		}
     
    // ici on peut afficher max, c'est la valeur max de tous les points
    System.out.println("La valeur max est " + max + " situé en " + imax + ", " + jmax);
    Mais attention, la méthode paintComponent() est censée s'exécutée plusieurs fois, à chaque fois que Swing le juge nécessaire, donc ce n'est jamais vraiment une bonne idée d'afficher des trucs dans cette méthode (des traces de débug ou de test, pourquoi pas, mais des résultats, c'est moins l'endroit adéquate).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  12. #32
    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
    Ah d'accoord c'est pour ça alors quand j'essayer d'afficher ce resultat dans une Jframe elle s'affiche en boucle ? Oui j'ai mis le code dans la methode paintComponent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    JFrame fimagette=new JFrame();
    		fimagette.setTitle("Imagette");
    		fimagette.setBounds(365,200,500,500);
    		JLabel jre=new JLabel();
    		jre.setText("La valeur max est " + max + " situé en " + imax + ", " + jmax);
    		fimagette.add(jre);
    		fimagette.pack();
     
    		fimagette.setVisible(true);

  13. #33
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Dans ton dernier code, tu affiches l'information dans un JLabel. Tu ne peux pas faire ça comme ça. Tu pourrais éventuellement mettre le setLabel() dans la méthode paintComponent() puisqu'au moins on est bien dans l'EDT, mais on ne devrait pas normalement (ce n'est pas très clean niveau archi), surtout que ça oblige à avoir une référence dans le JLabel. En théorie, pour bien le faire, il faudra générer une matrice dans une méthode à part et n'en faire que l'affichage dans paintComponent (en fait, tu aurais dû faire ça dès le départ mais c'était tolérable dans le contexte).

    Comme ça par exemple :

    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
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    public class Histogrammebilineaire extends JPanel {
     
    	private final BufferedImage matrice;
    	private final Max max;
     
    	public Histogrammebilineaire(BufferedImage monImage, BufferedImage monImage2, int nbCases, int largeurCase) {
    		int largeur = Math.min(nbCases, Math.min(monImage.getWidth(), monImage.getWidth()));
    		int hauteur = Math.min(nbCases, Math.min(monImage.getHeight(), monImage2.getHeight()));
    		int largeurGrille = largeur * largeurCase;
    		int hauteurGrille = hauteur * largeurCase;
    		matrice = new BufferedImage(largeurGrille, hauteurGrille, BufferedImage.TYPE_INT_RGB);
    		Graphics2D g = matrice.createGraphics();
    		int max=-1;
    		int imax=-1;
    		int jmax=-1;
    		for (int i = 0; i < largeur; i++) {
    			for (int j = 0; j < hauteur; j++) {
    				int pixel = monImage.getRGB(i, j);
    				int gray = ((pixel >> 16) & 0xFF) >> 3;
     
    				int pixel2 = monImage2.getRGB(i, j);
    				int gray2 = ((pixel2 >> 16) & 0xFF) >> 3;
     
    				int valeur = (gray + gray2) << 2;
     
    				if ( valeur>max ) {
    					max=valeur;
    					imax=i;
    					jmax=j;
    				}
     
    				g.setColor(new Color(valeur, valeur, valeur));
     
    				g.fillRect(i * largeurCase, j * largeurCase, largeurCase, largeurCase); // remplissage
    																						// (fill)
    			}
    		}
    		g.setColor(Color.WHITE);
    		for (int i = 0; i < largeur; i++) {
    			g.drawLine(i * largeurCase, 0, i * largeurCase, hauteurGrille);  
    		}
    		for (int i = 0; i < hauteur; i ++) {
    			g.drawLine(0, i*largeurCase, largeurGrille, i*largeurCase);  
    		}
    		g.dispose();
    		this.max = new Max(max, imax, jmax);
    		setPreferredSize(new Dimension(largeurGrille,hauteurGrille));
    	}
     
    	@Override
    	protected void paintComponent(Graphics g) {
     
    		super.paintComponent(g);
    		g.drawImage(matrice, 0, 0, this);
     
    	}
     
    	public Max getMax() {
    		return max;
    	}
     
    	public static class Max {
     
    		private final int max;
    		private final int x;
    		private final int y;
     
    		public Max(int max, int x, int y) {
    			this.max=max;
    			this.x=x;
    			this.y=y;
    		}
     
    		public int getMax() {
    			return max;
    		}
     
    		public int getX() {
    			return x;
    		}
     
    		public int getY() {
    			return y;
    		}
     
    	}
     
    	public static void main(String[] arg) {
     
    		try {
    			BufferedImage image1 = ImageIO.read(new File("C:/Users/Joël/Pictures/suricate.png"));
    			try {
    				BufferedImage image2 = ImageIO.read(new File("C:/Users/Joël/Pictures/Google Talk/Alien 1.bmp"));
     
    				JFrame fenetre = new JFrame("Histogramme Bilinéaire");
    				fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    				Histogrammebilineaire panneau = new Histogrammebilineaire(image1, image2, 32, 8);
    				panneau.setBackground(Color.WHITE);
     
    				fenetre.add(panneau);
     
    				fenetre.pack();
    				fenetre.setLocationRelativeTo(null);
    				fenetre.setVisible(true); 
     
     
    				JFrame fimagette=new JFrame();
    				fimagette.setTitle("Imagette");
    				fimagette.setBounds(365,200,500,500);
    				JLabel jre=new JLabel();
    				jre.setText("La valeur max est " + panneau.getMax().getMax() + " situé en " + panneau.getMax().getX() + ", " + panneau.getMax().getY());
    				fimagette.add(jre);
    				fimagette.pack(); 
     
    				fimagette.setVisible(true);
     
     
    			} catch (IOException e) {
    				e.printStackTrace();
    				JOptionPane.showMessageDialog(null, "Problème pour charger la seconde image");
    			}
    		} catch (IOException e) {
    			e.printStackTrace();
    			JOptionPane.showMessageDialog(null, "Problème pour charger la première image");
    		}
     
    	}
     
     
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  14. #34
    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
    Super merci beaucoup !!!
    Enfaite peut-on afficher le nombre de point d'une image ? Normalement c'est nombre de pixel ou quelque chose comme ça ? Du coup je suis censée afficher le nbpts de "l'image"

  15. #35
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Oui.

    S'il s'agit du nombre de points (ou pixels) de l'image d'origine, ce sera sa largeur mulitpliée par sa hauteur.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  16. #36
    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
    Merci !
    Bien cordialement,

  17. #37
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par YOUHANA Voir le message
    ce que je dois faire c'est representer l'image1 dans la position i de la grille et l'image2dans la position j.
    Ça n'a strictement aucun sens : la position i dans la grille, la position j dans la grille ? On parle bien de grille à 2 dimensions, non ? Et qu'est-ce signifie représenter une image ? Tout et rien à la fois. Donc rien.

    Ensuite, plutôt qu'un crobar à moitié lisible et incompréhensible, ce serait mieux d'exprimer l'énoncé (complet) avec des phrases et des mots.

    Enfin, il serait bien que tu commences à faire les choses toi-même, à écrire du code, et ensuite, si tu as du mal, on pourra t'aider à le faire fonctionner. Mais il me semble que maintenant tu as toute les cartes en main pour faire l'exercice, pour autant que je puisse en juger (vu que l'énoncé n'a aucun sens pour moi).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  18. #38
    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
    Bon j'ai modifier le code j'ai juste mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g.fillRect(gray * largeurCase, gray2 * largeurCase, largeurCase, largeurCase);
    et ça marche je crois ! Merci

  19. #39
    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,
    Désolé mais mon prb n'est pas resolu du tout Enfaite je vous explique par exemple on a une image avec deux couleurs pas plus (couleur 1 presente 75% de l'image et couleur 2 presente 25%) , on la passe en teinte puis en saturation l'histogramme (de l'image teinte et saturation) doit avoir que 2 cases et les autres cases sont vides vu qu'on a que 2 valeurs ! J'espere que j'ai bien expliqué cette fois-ci et j'espere que vous pourriez m'aider, puis enfaite je dois pas prendre le min des deux images vu que l'image sera la même c'est que le filtre qui diffère parceque le nombre de points est important , dans mon code il garde que 1024 !
    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
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    public class Histogrammebilineaire extends JPanel {
     
    	private final BufferedImage matrice;
    	private final Max max;
     
    	public Histogrammebilineaire(BufferedImage monImage, BufferedImage monImage2, int nbCases, int largeurCase) {
    		int largeur = Math.min(nbCases, Math.min(monImage.getWidth(), monImage.getWidth()));
    		int hauteur = Math.min(nbCases, Math.min(monImage.getHeight(), monImage2.getHeight()));
    		int largeurGrille = largeur * largeurCase;
    		int hauteurGrille = hauteur * largeurCase;
    		matrice = new BufferedImage(largeurGrille, hauteurGrille, BufferedImage.TYPE_INT_RGB);
    		Graphics2D g = matrice.createGraphics();
    		int max=-1;
    		int imax=-1;
    		int jmax=-1;
    		for (int i = 0; i < largeur; i++) {
    			for (int j = 0; j < hauteur; j++) {
    				int pixel = monImage.getRGB(i, j);
    				int gray = ((pixel >> 16) & 0xFF) >> 3;
     
    				int pixel2 = monImage2.getRGB(i, j);
    				int gray2 = ((pixel2 >> 16) & 0xFF) >> 3;
     
    				int valeur = (gray + gray2) << 2;
     
    				if ( valeur>max ) {
    					max=valeur;
    					imax=i;
    					jmax=j;
    				}
     
    				g.setColor(new Color(valeur, valeur, valeur));
     
    				g.fillRect(i * largeurCase, j * largeurCase, largeurCase, largeurCase); // remplissage
    																						// (fill)
    			}
    		}
    		g.setColor(Color.WHITE);
    		for (int i = 0; i < largeur; i++) {
    			g.drawLine(i * largeurCase, 0, i * largeurCase, hauteurGrille);  
    		}
    		for (int i = 0; i < hauteur; i ++) {
    			g.drawLine(0, i*largeurCase, largeurGrille, i*largeurCase);  
    		}
    		g.dispose();
    		this.max = new Max(max, imax, jmax);
    		setPreferredSize(new Dimension(largeurGrille,hauteurGrille));
    	}
     
    	@Override
    	protected void paintComponent(Graphics g) {
     
    		super.paintComponent(g);
    		g.drawImage(matrice, 0, 0, this);
     
    	}
     
    	public Max getMax() {
    		return max;
    	}
     
    	public static class Max {
     
    		private final int max;
    		private final int x;
    		private final int y;
     
    		public Max(int max, int x, int y) {
    			this.max=max;
    			this.x=x;
    			this.y=y;
    		}
     
    		public int getMax() {
    			return max;
    		}
     
    		public int getX() {
    			return x;
    		}
     
    		public int getY() {
    			return y;
    		}
     
    	}
     
    	public static void main(String[] arg) {
     
    		try {
    			BufferedImage image1 = ImageIO.read(new File("C:/Users/Joël/Pictures/suricate.png"));
    			try {
    				BufferedImage image2 = ImageIO.read(new File("C:/Users/Joël/Pictures/Google Talk/Alien 1.bmp"));
     
    				JFrame fenetre = new JFrame("Histogramme Bilinéaire");
    				fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    				Histogrammebilineaire panneau = new Histogrammebilineaire(image1, image2, 32, 8);
    				panneau.setBackground(Color.WHITE);
     
    				fenetre.add(panneau);
     
    				fenetre.pack();
    				fenetre.setLocationRelativeTo(null);
    				fenetre.setVisible(true); 
     
     
    				JFrame fimagette=new JFrame();
    				fimagette.setTitle("Imagette");
    				fimagette.setBounds(365,200,500,500);
    				JLabel jre=new JLabel();
    				jre.setText("La valeur max est " + panneau.getMax().getMax() + " situé en " + panneau.getMax().getX() + ", " + panneau.getMax().getY());
    				fimagette.add(jre);
    				fimagette.pack(); 
     
    				fimagette.setVisible(true);
     
     
    			} catch (IOException e) {
    				e.printStackTrace();
    				JOptionPane.showMessageDialog(null, "Problème pour charger la seconde image");
    			}
    		} catch (IOException e) {
    			e.printStackTrace();
    			JOptionPane.showMessageDialog(null, "Problème pour charger la première image");
    		}
     
    	}
     
     
    }

  20. #40
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Le problème c'est qu'on s'éloigne de plus en plus de problèmes de Java pour aller vers le traitement d'image. Ce forum est un forum de programmation en Java. Si tu as des questions concernant la programmation en Java, on peut t'aider ici, pour le reste, je passe la main, ce n'est pas mon domaine, et ce n'est pas le bon forum.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 4 PremièrePremière 1234 DernièreDernière

Discussions similaires

  1. [2D/3D] [OpenGL] Histogramme 3D d'une image
    Par 686insomnia686 dans le forum Qt
    Réponses: 9
    Dernier message: 09/10/2013, 00h26
  2. [Débutant] histogramme logarithmique d'une image
    Par amal1410 dans le forum Images
    Réponses: 1
    Dernier message: 16/05/2013, 21h24
  3. histogramme vertical d'une image
    Par matrix2008 dans le forum Images
    Réponses: 5
    Dernier message: 13/12/2012, 11h49
  4. histogramme cumulé d'une image
    Par arsonlupo dans le forum Images
    Réponses: 1
    Dernier message: 02/06/2009, 21h01
  5. Réponses: 3
    Dernier message: 27/01/2005, 11h53

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