Heim >Java >javaLernprogramm >Wie erhalte ich die Pixel (RGB-Werte) eines Bildes mithilfe der Java OpenCV-Bibliothek?

Wie erhalte ich die Pixel (RGB-Werte) eines Bildes mithilfe der Java OpenCV-Bibliothek?

WBOY
WBOYnach vorne
2023-08-19 12:57:031925Durchsuche

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.

如何使用Java OpenCV库获取图像的像素(RGB值)?

Den Pixelinhalt (ARGB-Werte) eines Bildes abrufen –

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().

getBlue()-Methode bzw.

Beispiel

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");
   }
}

Ausgabe

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen