1

RGB画像を読み取り、画像のピクセルを抽出したい。次に、すべてのピクセルを比較して、画像の他の部分の一致するピクセルを確認します。そのピクセルが元のピクセルと一致し、一致したピクセルがJavaで赤と黄色に置き換えられる必要がある場合。

javaforumsや画像処理のウェブサイトからたくさん検索しました。私が得た完璧な解決策はまだありません。

先に進むために、いくつかのピクセル抽出器とピクセルマッチャーの例を挙げてください。

4

2 に答える 2

2

次のgetRGBAメソッドは、画像imgの位置(x、y)にあるRGBA配列を抽出します。

private final int ALPHA = 24;
private final int RED = 16;
private final int GREEN = 8;
private final int BLUE = 0;

public int[] getRGBA(BufferedImage img, int x, int y)
{   
    int[] color = new int[4];
    color[0]=getColor(img, x,y,RED);
    color[1]=getColor(img, x,y,GREEN);
    color[2]=getColor(img, x,y,BLUE);
    color[3]=getColor(img, x,y,ALPHA);
    return color;
}

public int getColor(int x, int y, int color)
{       
    int value=img.getRGBA(x, y) >> color & 0xff;
    return value;
}

ピクセルマッチャー?単にループを実行したいだけかもしれません。(0,0)ピクセルを元のピクセルとして使用していることを考えると、次のように実行できます。

    int[] originalPixel =  getRGBA(img,0,0);
    for (int i=0;i<img.getWidth();i++)
    {
        for (int j=0;j<img.getHeight();j++)
        {
           int[] color1 =  getRGBA(img,i,j);
           if (originalPixel[0] == color1[0] && originalPixel[1] == color1[1] && originalPixel[2] == color1[2] && originalPixel[3] == color1[3]) {
               img.setRGB(i, j,Color.red.getRGB());
           } 
           else {
               img.setRGB(i, j,Color.yellow.getRGB());
           }
        }
    }
于 2013-03-25T10:44:44.050 に答える
0

このMarvinアルゴリズムは、まさにあなたが望むことを実行します。

于 2013-07-18T13:44:40.793 に答える