2017-04-16 6 views
-1

Ich bin neu in Java und möchte rote Pixel in einem gegebenen Bild zählen. Ich habe bisher unter Code, aber nicht sicher, welche Bedingung hinzugefügt werden, um zu überprüfen, ob Pixel rot ist. Ich habe bisher unter Code. Danke im Voraus.Zählen rote Pixel in einem gegebenen Bild

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

Ich denke, es hängt von Ihrer Definition von * rot * ab? Wäre es rgb (255,0,0)? – domsson

+0

Ja, es wäre (255,0,0). –

+2

Nun, dann ... 'if (rot == 255 && grün == 0 && blau == 0) {++ redCount; } '? Oder sogar 'if (rgb == 0xFFFF0000) ...' – domsson

Antwort

0

nicht sicher, ob ich etwas fehlt oder Sie wirklich nicht den Wald vor lauter Bäumen nicht sehen. Wie auch immer, Kommentar drehte Antwort:

Da rot Mittel (255, 0, 0), könnten Sie tun:

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

Oder alternativ, wenn Sie alpha do not care:

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

Meine Zählung kommt am Ende der Funktion als 0. Deshalb bin ich verwirrt, wenn ich etwas falsches in dem Code getan habe, den ich oben eingefügt habe. –

+0

Wird es bei beiden Ansätzen mit "0" enden? – domsson

+0

Ja. Ich habe gerade das Bild mit PNG geändert und es hat funktioniert. Seltsam, dass es nicht für JPEGs funktioniert. –

Verwandte Themen