1

getRGB() を使用した後、ピクセルの色の赤、緑、または青のコンポーネントを取得し (グレーの画像では同じであるため問題ありません)、結果を MS Paint Eyedropper の結果と比較します。

import java.awt.Color;
import java.awt.color.ColorSpace;
import java.awt.image.BufferedImage;
import java.awt.image.ColorConvertOp;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.imageio.ImageIO;

public class Separator {

BufferedImage inputImg;

private int _inpupImgWidth;
private int _inpupImgHeight;                  

 public Separator(){

    try {
        inputImg = ImageIO.read(new File("inputImg.bmp"));
        _inpupImgWidth = inputImg.getWidth();
        _inpupImgHeight = inputImg.getHeight();


    } catch (IOException e) {
        e.printStackTrace();
    }
    System.out.println(getGrayPixelData(60, 44));
    try {
        ImageIO.write(inputImg, "BMP", new File("outputImg.bmp"));
    } catch (IOException e) {
        e.printStackTrace();
    }
     }

 public void getGrayPixelData(int x, int y){
     Color myColor = new Color(inputImg.getRGB(x, y));       
     System.out.println("Red: " + myColor.getRed());
     System.out.println("Green: " + myColor.getGreen());
     System.out.println("Blue: " + myColor.getBlue());
     }

public static void main(String[] args) {
    new Separator();
    System.out.println("The End");
}
}

ここに私が使用する画像のリンクがありますhttp://postimage.org/image/t6tvlv941/

4

1 に答える 1

0

画像はグレースケール モードです。

グレースケール値を R、G、B に変換する方法は非常に恣意的です。

単純な方法は、R、G、および B コンポーネントのそれぞれに同じグレースケール値を割り当てることです。

より洗練された方法は、これらのさまざまなコンポーネントに対する目の感度を考慮した変換、またはモニターやその他のディスプレイ デバイスのプロファイルを考慮した変換を使用することです。

明らかに、Java とあなたのプログラムは異なる変換を使用しています。ただし、どちらの場合も、正確な R、G、および B の値は本質的に意味がありません。元のデータは R、G、B 形式ではありません。

于 2012-11-04T15:34:47.860 に答える