2 Stimmen

Wie bekomme ich die Graustufen für jedes Pixel eines Bildes in Java?

Hier... Ich habe eine Frage zu meiner Hausarbeit über Bildverarbeitung mit Java. Meine Frage : Wie erhält man den Grauwert jedes Pixels eines RGB-Bildes in der Java-Programmierung???

Ich weiß nur ein wenig darüber, wie man rgb-Wert jedes Pixel durch Syntax image.getRGB(x,y) für Rückgabe rgb-Wert zu erhalten. Ich habe keine Ahnung für die Graustufenwert jedes Pixel des Bildes zu bekommen....

Vielen Dank für den Vorschuss

1voto

WhiteFang34 Punkte 69056

Zuerst müssen Sie die Rot-, Grün- und Blauwerte jedes Pixels extrahieren, die Sie aus image.getRGB(x, y) . Siehe diese Antwort darüber. Dann lesen Sie über Farbe in Graustufen umwandeln .

1voto

Daniel Devlin Punkte 83

Ich stimme der vorherigen Antwort zu. Erstellen Sie das BufferedImage wie BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_GRAY). Soweit ich weiß, dient ein Raster zum Lesen von Pixeldaten und ein beschreibbares Raster zum Schreiben von Pixeldaten oder zum Aktualisieren von Pixeln. Ich verwende immer beschreibbare Raster, obwohl dies vielleicht nicht die beste Methode ist, da man Pixeldaten lesen und Pixelwerte setzen kann. Sie können das Raster mit WritableRaster raster = image.getRaster() abrufen; Sie können dann den Wert eines Pixels mit raster.getSample(x, y, 0) abrufen; die 0 in den Argumenten steht für das Band, das Sie abrufen möchten und das bei Graustufenbildern 0 sein sollte.

0voto

MeBigFatGuy Punkte 27784

Sie könnten auch ein BufferedImage vom Typ TYPE_BYTE_GRAY einrichten und das Bild darin zeichnen, dann die Rasterdaten abrufen und die Werte ermitteln.

0voto

Raist Punkte 99

Ergänzend zu Daniels Antwort:

WritableRaster wr = myBufferedImage.getRaster();

for(int i = 0; i < myBufferedImage.getWidth(); i++){
    for(int j = 0; j < myBufferedImage.getHeight(); j++){
        int grayLevelPixel = wr.getSample(i, j, 0);
        wr.setSample(i, j, 0, grayLevelPixel); // Setting same gray level, will do nothing on the image, just to show how.
    }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X