Java
 Computer >> コンピューター >  >> プログラミング >> Java

Java OpenCVライブラリを使用して画像のピクセル(RGB値)を取得するにはどうすればよいですか?


デジタル画像はピクセルの2D配列として保存され、ピクセルはデジタル画像の最小要素です。

各ピクセルにはアルファ、赤、緑、青の値が含まれ、各色の値は0〜255で、8ビット(2 ^ 8)を消費します。

ARGB値は、同じ順序(右から左)で4バイトのメモリに格納され、青の値は0〜7ビット、緑の値は8〜15ビット、赤の値は16〜23ビット、アルファは24〜31です。ビット。

Java OpenCVライブラリを使用して画像のピクセル(RGB値)を取得するにはどうすればよいですか?

画像のピクセルコンテンツ(ARGB値)の取得-

画像からピクセル値を取得するには-

  • 画像の各ピクセルをループします。つまり、画像の高さと幅を横断するネストされたループを実行します。

  • getRGB()メソッドを使用してすべてのポイントでピクセル値を取得します。

  • ピクセル値をパラメータとして渡して、Colorオブジェクトをインスタンス化します。

  • getRed()、getGreen()、getBlue()メソッドをそれぞれ使用して、Red、Green、Blueの値を取得します。

javaに続いて、exampleは画像のすべてのピクセルの内容を読み取り、RGB値をファイルに書き込みます-

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

シフト演算子-

を使用して、ピクセルからRGB値を取得することもできます。

そうするために-

  • 右、各色の開始位置にシフトします。つまり、アルファの場合は24、赤の場合は16などです。

  • 右シフト操作は他のチャネルの値に影響を与える可能性があります。これを回避するには、ビット単位で0Xffで操作する必要があります。これにより、変数がマスクされ、最後の8ビットが残り、残りのビットはすべて無視されます。

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;

  1. Java OpenCVライブラリを使用して画像のピクセル(RGB値)を設定/変更するにはどうすればよいですか?

    ピクセルはデジタル画像の最小要素であり、各ピクセルにはアルファ、赤、緑、青の値が含まれています。ピクセル値は、同じ順序でARGB値(各8ビット)を保持する32ビットのメモリ空間に格納されます。したがって、画像の色を変更するには- 画像の各ピクセルをループする必要があります。 getRGB()メソッドを使用してピクセル値を取得します。 ピクセル値からARGB値を取得します。 RGB値に必要な変更を加えます。 変更されたRGB値を使用して新しいピクセル値を作成します。 setRGB()メソッドを使用して新しいピクセル値を設定します。 ARGB値の設定- ピ

  2. Java OpenCVライブラリを使用してイメージを作成するにはどうすればよいですか?

    OpenCVライブラリを使用すると、画像フィルタリング、幾何学的画像変換、色空間変換、ヒストグラムなどの画像処理操作を実行できます。 画像を書く Imgcodecsクラスのimread()メソッドを使用して画像のコンテンツを読み取るたびに、結果がMatrixオブジェクトに読み込まれます。 imwrite()メソッドを使用してイメージを書き込み/保存できます。これは2つのパラメータ、つまり-を受け入れます ファイル −結果を保存するファイルパスを表す文字列値。 Img −保存する画像のデータを含むマトリックスオブジェクト。 例 次のJavaの例は画像の内容を読み取りますc