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

 Java Discussion :

Nombre de points d'une image


Sujet :

Java

  1. #1
    Membre du Club
    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
    Points : 64
    Points
    64
    Par défaut Nombre de points d'une image
    Bonjour je compte le nombre de points d'une image comme ça
    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
    package STAGE;
     
     
    public class HB {
    BufferedImage monImage;
    	public HB(){
    		   File input = new File("d:/capture2.PNG");
     
    		   try {
    			monImage = ImageIO.read(input);
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		   int width = monImage.getWidth();
    		   int height = monImage.getHeight();
    		   int nbpts=width*height;
    		   System.out.println(""+nbpts);
     
    	}
     
    		 static public void main(String args[]) throws Exception {
    		  HB obj = new HB();
    		 }
    		}
    Du coup l'image est à 3 classe le drapeau de la france par exemple comment peux je ecrire un programme qui calcule le nombre du point de la partie rouge la partie bleu ... Je veux avoir un programme capable de detecter les nombre de point de chaque classe si y'en a !

  2. #2
    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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Qu'est-ce que cette histoire de classe ? Tu parles de couleur, pas de classe, non ?

    Pour pouvoir compter le nombre de points par couleur, il faudrait stocker autant de compteurs que de couleurs dans l'image. Comme on ne connait pas le nombre de couleurs d'avance, et que définir autant de compteur que de couleurs possibles est innenvisageable, on va faire des compteurs pour les couleurs qui se trouvent dans l'image. Le plus simple pour faire ça est d'utiliser une Map.

    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
    public static Map<Color, Integer> getNombreDePointsParCouleur(BufferedImage image) {
     
    		final Map<Color, Integer> map = new HashMap<>();
     
                   // on parcourt tous les pixels de l'image
    		for(int i=0; i<image.getWidth(); i++) {
    			for(int j=0; j<image.getHeight(); j++) {
     
    				Color color = new Color(image.getRGB(i, j)); // on calcule la couleur correspondant au pixel en forçant la composante alpha à 255
    				if ( map.containsKey(color) ) { // si la couleur est déjà dans la map
    					map.put(color, map.get(color)+1);  // on incrémente
    				}
    				else {
    					map.put(color, 1); // sinon on initialise à 1
    				}
     
    			}
    		}
     
    		return map;
     
     
    	}
    Ou en utilisant une expression lambda :

    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
    public static Map<Color, Integer> getNombreDePointsParCouleur(BufferedImage image) {
     
    		final Map<Color, Integer> map = new HashMap<>();
     
    		for(int i=0; i<image.getWidth(); i++) {
    			for(int j=0; j<image.getHeight(); j++) {
     
     
    				map.compute(new Color(image.getRGB(i, j)), (color, nb)-> nb==null?1:nb++);
     
    			}
    		}
     
    		return map;
     
     
    	}
    Ensuite, on peut appeler la méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Map<Color, Integer> colors = getNombreDePointsParCouleur(image);
    Pour connaître le nombre de couleurs différentes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(colors.size());
    Afficher la liste des couleurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(colors.keySet());
    Afficher le nombre de point Rouge #FF0000
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(colors.getOrDefault(Color.RED, 0));
    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.

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/04/2013, 10h50
  2. le pixel noir le plus proche d'un point dans une image
    Par tlemcenvisit dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 28/03/2006, 08h44
  3. Comptage du nombre d'objets dans une image
    Par fire.stone dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 27/02/2006, 21h26
  4. [Image]Nombre de couleur d'une image
    Par daxuza dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 05/09/2005, 08h14
  5. Mesure distance entre 2 points d'une image
    Par vexal dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/05/2005, 14h29

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