如何获取图像的像素值并将其存储到数组中?

时间:2014-11-12 23:54:10

标签: java image pixel

我想尝试在图像中查找图像。对于我的“查找”方法,我想拍摄一张图像并用它来扫描并比较绝对差异的总和与较大的图像。

最小的SAD将是我用来扫描的确切图像。我想的是将两个图像的每个像素值放在两个单独的数组中,并通过Math.abs(image1[i][j]-image2[i][j]);进行比较。我唯一的问题是我不知道如何将每个像素值放入数组中。

另外,如果我只想比较图片中的绿色。我看到Pixel类有一个getGreen();方法。如果我想找到绿色的SAD,Math.abs(image1.getGreen()-image2.getGreen());会工作吗?我计划在每个图像中运行2个嵌套循环,然后找到绿色值的SAD。

1 个答案:

答案 0 :(得分:1)

您可以将图像的所有颜色都添加到Color [] []中,就像这样

BufferedImage paintImage = null;
    try {
         paintImage = ImageIO.read(new File ("C://Users/promo.png"));
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    Color[][] cols = new Color[paintImage.getWidth()][paintImage.getHeight()];
    for(int z = 0;z < paintImage.getWidth();z++){
        for(int a = 0;a < paintImage.getHeight();a++){
            int color = paintImage.getRGB(z, a);

            int  red = (color & 0x00ff0000) >> 16;
            int  green = (color & 0x0000ff00) >> 8;
            int  blue = color & 0x000000ff;
            int alpha = (color>>24) & 0xff;
            Color col = new Color(red,green,blue,alpha);
            cols[z][a] = col;

        }
    }