Heim >Java >javaLernprogramm >Wie erhalte ich die Pixel (RGB-Werte) eines Bildes mithilfe der Java OpenCV-Bibliothek?
Digitale Bilder werden als 2D-Pixel-Arrays gespeichert, die die kleinsten Elemente digitaler Bilder sind.
Jedes Pixel enthält Alpha-, Rot-, Grün- und Blauwerte. Jeder Farbwert reicht von 0 bis 255 und belegt 8 Bit (2^8).
ARGB-Werte werden in 4 Bytes Speicher in der gleichen Reihenfolge (von rechts nach links) gespeichert, blaue Werte in den Bits 0-7, grüne Werte in den Bits 8-15, rote Werte in den Bits 16 -23, Alpha Der Wert steht in den Bits 24-31.
So erhalten Sie die Pixelwerte eines Bildes –
Durchlaufen Sie jedes Pixel im Bild. d. h. eine verschachtelte Schleife durch die Höhe und Breite des Bildes ausführen.
Verwenden Sie die Methode getRGB(), um den Pixelwert jedes Punkts abzurufen.
Instanziieren Sie ein Farbobjekt, indem Sie den Pixelwert als Parameter übergeben.
Erhalten Sie rote, grüne und blaue Werte mit den Methoden getRed(), getGreen() und getBlue().
Das Folgende ist ein Beispiel in Java, das den Inhalt jedes Pixels des Bildes liest und die RGB-Werte in eine Datei schreibt −
import java.io.File; import java.io.FileWriter; import java.awt.Color; import java.awt.image.BufferedImage; import javax.imageio.ImageIO; public class GetPixels { public static void main(String args[])throws Exception { FileWriter writer = new FileWriter("D:\Images\pixel_values.txt"); //Reading the image File file= new File("D:\Images\cat.jpg"); BufferedImage img = ImageIO.read(file); for (int y = 0; y < img.getHeight(); y++) { for (int x = 0; x < img.getWidth(); x++) { //Retrieving contents of a pixel int pixel = img.getRGB(x,y); //Creating a Color object from pixel value Color color = new Color(pixel, true); //Retrieving the R G B values int red = color.getRed(); int green = color.getGreen(); int blue = color.getBlue(); writer.append(red+":"); writer.append(green+":"); writer.append(blue+""); writer.append("\n"); writer.flush(); } } writer.close(); System.out.println("RGB values at each pixel are stored in the specified file"); } }
RGB values at each pixel are stored in the specified file
Sie können auch den Verschiebungsoperator verwenden, um die RGB-Werte aus den Pixeln abzurufen
Dazu
nach rechts verschieben und dabei die Startposition jeder Farbe an die entsprechende Position verschieben, zum Beispiel 24 für Alpha und 24 für Rot 16 usw.
Die rechte Verschiebungsoperation kann sich auf die Werte anderer Kanäle auswirken. Um dies zu vermeiden, müssen Sie eine bitweise UND-Verknüpfung mit 0Xff durchführen. Dadurch wird die Variable maskiert, nur die letzten 8 Bits bleiben erhalten und der Rest wird ignoriert.
int p = img.getRGB(x, y); //Getting the A R G B values from the pixel value int a = (p>>24)&0xff; int r = (p>>16)&0xff; int g = (p>>8)&0xff; int b = p&0xff;
Das obige ist der detaillierte Inhalt vonWie erhalte ich die Pixel (RGB-Werte) eines Bildes mithilfe der Java OpenCV-Bibliothek?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!