Maison >Java >javaDidacticiel >Comment obtenir les pixels (valeurs RVB) d'une image à l'aide de la bibliothèque Java OpenCV ?
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.
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().
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"); } }
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!