0

我有这段代码,我在其中提取了每个像素的 RGB 值,但我想知道如何将每个 RGB 值存储在一个数组中,以便我可以在我的项目中进一步使用它。我想将这些存储的 RGB 值作为反向传播算法的输入。

    import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import java.awt.Color;
import java.util.ArrayList;
import java.util.List;

public class PrintImageARGBPixels
{

public static void main(String args[])throws IOException
{
BufferedImage image = ImageIO.read(new File("C:\\Users\\ark\\Desktop\\project_doc\\logo_1004.jpg"));
int r=0,g=0,b=0;
int w = image.getWidth();
int h = image.getHeight();
System.out.println("Image Dimension: Height-" + h + ", Width-"+ w);
int total_pixels=(h * w);
ArrayList <Color> arr = new ArrayList<Color>();
for(int x=0;x<w;x++)
{
for(int y=0;y<h;y++)
{
int rgb = image.getRGB(x, y);
Color c = new Color(rgb);
r=c.getRed();
g=c.getGreen();
b=c.getBlue();
 }
}

Color co = new Color(r,g,b);
arr.add(co);
for(int i=0;i<total_pixels;i++)
System.out.println("Element 1"+i+1+", color: Red " + arr.get(i).getRed() + " Green +arr.get(i).getGreen()+ " Blue " + arr.get(i).getBlue());

}
}
4

3 回答 3

2

你为什么不像这样创建一个 RGB 对象

public class RGB {

    private int R, G, B;

    public RGB(int R, int G, int B){
        this.R = R;
        this.G = G;
        this.B = B;
    }

    public int getR() {
        return R;
    }

    public void setR(int r) {
        R = r;
    }

    public int getG() {
        return G;
    }

    public void setG(int g) {
        G = g;
    }

    public int getB() {
        return B;
    }

    public void setB(int b) {
        B = b;
    }

}

因此,您可以将 RGB 对象存储在数组中以供以后使用。

问候!

于 2013-11-12T10:47:32.060 回答
2
// Store the color objects in an array
    int total_pixels = (h * w);
    Color[] colors = new Color[total_pixels];
    int i = 0;

    for (int x = 0; x < w; x++)
    {
      for (int y = 0; y < h; y++)
      {
        colors[i] = new Color(image.getRGB(x, y));
        i++;
      }
    }

// Later you can retrieve them
    for (int i = 0; i < total_pixels; i++)
    {
      Color c = colors[i];
      int r = c.getRed();
      int g = c.getGreen();
      int b = c.getBlue();
      System.out.println("Red" + r + "Green" + g + "Blue" + b);
    }

忽略以下,这是我的旧答案

使用多维数组:

[
 [255, 255, 255],
 [108, 106, 107],
 [100, 100, 55],
 ...
]

然后,您可以参考每个像素 [0][x] 来获取颜色值。

于 2013-11-12T10:50:41.477 回答
0

使用 HashMap 可以更轻松地实现它,其中 Key 是一个 int[](x 和 y),而 value 是另一个 int[](r,g,b)。

于 2013-11-12T10:47:59.020 回答