Maison >Java >javaDidacticiel >Comment obtenir les pixels (valeurs RVB) d'une image à l'aide de la bibliothèque Java OpenCV ?

Comment obtenir les pixels (valeurs RVB) d'une image à l'aide de la bibliothèque Java OpenCV ?

WBOY
WBOYavant
2023-08-19 12:57:031923parcourir

Les images numériques sont stockées sous forme de tableaux 2D de pixels, qui sont les plus petits éléments des images numériques.

Chaque pixel contient des valeurs alpha, rouge, verte et bleue. Chaque valeur de couleur va de 0 à 255 et occupe 8 bits (2 ^ 8).

Les valeurs ARGB sont stockées dans 4 octets de mémoire dans le même ordre (de droite à gauche), les valeurs bleues dans les bits 0 à 7, les valeurs vertes dans les bits 8 à 15, les valeurs rouges dans les bits 16 -23, alpha La valeur est dans les bits 24 à 31.

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

Récupérer le contenu en pixels (valeurs ARVB) d'une image -

Pour obtenir les valeurs de pixels d'une image -

  • Parcourez chaque pixel de l'image. c'est-à-dire exécuter une boucle imbriquée sur la hauteur et la largeur de l'image.

  • Utilisez la méthode getRGB() pour obtenir la valeur en pixels de chaque point.

  • Instancier un objet Color en passant la valeur du pixel en paramètre.

  • Obtenez les valeurs rouge, verte et bleue en utilisant les méthodes getRed(), getGreen() et getBlue().

getBlue() respectivement.

Exemple

Ce qui suit est un exemple en Java qui lit le contenu de chaque pixel de l'image et écrit les valeurs RVB dans un fichier −

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

Output

RGB values at each pixel are stored in the specified file

Vous pouvez également utiliser l'opérateur shift pour récupérer les valeurs RVB des pixels

Pour ce faire,

  • décalez vers la droite, en déplaçant la position de départ de chaque couleur vers la position correspondante, par exemple 24 pour alpha et 24 pour rouge 16, etc.

  • L'opération de décalage à droite peut affecter les valeurs des autres canaux. Pour éviter cela, vous devez effectuer une opération ET au niveau du bit avec 0Xff. Cela masque la variable, en ne gardant que les 8 derniers bits et en ignorant tout le reste.

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;

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer