2017-04-16 1 views
-1

Je suis nouveau sur Java et je veux compter les pixels rouges dans une image donnée. J'ai ci-dessous le code jusqu'à présent, mais je ne suis pas sûr de la condition à ajouter pour vérifier si le pixel est rouge. J'ai sous le code jusqu'ici. Merci d'avance.Nombre de pixels rouges dans une image donnée

public static int countRedPixels(Picture v){ 

    BufferedImage image = (v.getBufferedImage()); 
    int width = image.getWidth(); 
    int height = image.getHeight(); 

    int redCount = 0; 
    int pixelCount = 0; 

    for (int x = 0; x < width; x++) { 
     for (int y = 0; y < height ; y++) { 

      int rgb = image.getRGB(x, y); 

      //get rgbs 
      //int alpha = (rgb >>> 24) & 0xFF; 
      int red = (rgb >>> 16) & 0xFF; 
      int green = (rgb >>> 8) & 0xFF; 
      int blue = (rgb >>> 0) & 0xFF; 

      if (red == 255 && green == 0 && blue == 0 || image.getRGB(x, y) == 0xFFFF0000) { 
       redCount++; 
      } 

      pixelCount++; 
     } 
    } 

    System.out.println("Red Pixel Count:" + redCount); 
    System.out.println("Pixel Count:" + pixelCount); 
    return redCount; 
} 

enter image description here

+1

Je suppose que cela dépend de votre définition de * rouge *? Serait-ce rgb (255,0,0)? – domsson

+0

Oui, ce serait (255,0,0). –

+2

Eh bien, alors ... 'if (rouge == 255 && vert == 0 && bleu == 0) {++ redCount; } '? Ou même 'if (rgb == 0xFFFF0000) ...' – domsson

Répondre

0

Je ne sais pas si je me manque quelque chose ou que vous n'êtes vraiment pas voir la forêt pour les arbres. Quoi qu'il en soit, commenter tourné réponse:

Étant donné que rouges moyens (255, 0, 0), vous pouvez faire:

if (image.getRGB(x, y) == 0xFFFF0000) { 
    ++redCount; 
} 

Ou bien, si vous ne se soucient pas de l'alpha:

if (red == 255 && green == 0 && blue == 0) { 
    ++redCount; 
} 
+0

Mon compte arrive à 0 à la fin de la fonction. C'est pourquoi je suis confus si j'ai fait quelque chose de mal dans le code que j'ai collé ci-dessus. –

+0

Est-ce que ça finit par "0" avec ces deux approches? – domsson

+0

Oui. Je viens de changer l'image avec png un et cela a fonctionné. Bizarre que ça ne marche pas pour les jpegs. –