java中图片的颜色直方图-错误结果

java中图片的颜色直方图-错误结果,java,histogram,bufferedimage,Java,Histogram,Bufferedimage,我想创建一个图像的颜色直方图,如这里所述(查看部分示例): 我从维基百科的示例部分复制了这只猫的图片:得到了不同的结果。 我把代码贴在下面。我犯了什么错误吗 我的代码: import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; public class Main { public static void main(String[] args) thro

我想创建一个图像的颜色直方图,如这里所述(查看部分示例):

我从维基百科的示例部分复制了这只猫的图片:得到了不同的结果。 我把代码贴在下面。我犯了什么错误吗

我的代码:

        import java.awt.image.BufferedImage;
import java.io.File;

import javax.imageio.ImageIO;

public class Main {
    public static void main(String[] args) throws Exception {
        int[][][] ch = new int[4][4][4];
        BufferedImage image = ImageIO.read(new File("kot.jpg"));
        for(int x = 0; x < image.getWidth(); x++)
            for(int y = 0; y < image.getHeight(); y++) {
                int color = image.getRGB(x, y);
                int alpha = (color & 0xff000000) >> 24;
                int red = (color & 0x00ff0000) >> 16;
                int green = (color & 0x0000ff00) >> 8;
                int blue = color & 0x000000ff;
                ch[red / 64][green / 64][blue / 64]++;
            }
        for(int i = 0; i < ch.length; i++)
            for(int j = 0; j < ch[i].length; j++)
                for(int p = 0; p < ch[i][j].length; p++)
                    System.out.println("t[" + i + "][" + j + "][" + p + "] = " + ch[i][j][p]);

    }
}

我的结果:

t[0][0][0] = 28257
t[0][0][1] = 1181
t[0][0][2] = 0
t[0][0][3] = 0
t[0][1][0] = 58
t[0][1][1] = 1414
t[0][1][2] = 156
t[0][1][3] = 0
t[0][2][0] = 0
t[0][2][1] = 0
t[0][2][2] = 0
t[0][2][3] = 0
t[0][3][0] = 0
t[0][3][1] = 0
t[0][3][2] = 0
t[0][3][3] = 0
t[1][0][0] = 2898
t[1][0][1] = 36
t[1][0][2] = 0
t[1][0][3] = 0
t[1][1][0] = 1517
t[1][1][1] = 9858
t[1][1][2] = 1389
t[1][1][3] = 0
t[1][2][0] = 0
t[1][2][1] = 357
t[1][2][2] = 2405
t[1][2][3] = 1
t[1][3][0] = 0
t[1][3][1] = 0
t[1][3][2] = 0
t[1][3][3] = 0
t[2][0][0] = 2794
t[2][0][1] = 3
t[2][0][2] = 0
t[2][0][3] = 0
t[2][1][0] = 7533
t[2][1][1] = 33807
t[2][1][2] = 40
t[2][1][3] = 0
t[2][2][0] = 0
t[2][2][1] = 60782
t[2][2][2] = 371779
t[2][2][3] = 87464
t[2][3][0] = 0
t[2][3][1] = 0
t[2][3][2] = 438
t[2][3][3] = 60218
t[3][0][0] = 0
t[3][0][1] = 0
t[3][0][2] = 0
t[3][0][3] = 0
t[3][1][0] = 123
t[3][1][1] = 4056
t[3][1][2] = 0
t[3][1][3] = 0
t[3][2][0] = 0
t[3][2][1] = 9118
t[3][2][2] = 14215
t[3][2][3] = 118
t[3][3][0] = 0
t[3][3][1] = 0
t[3][3][2] = 12257
t[3][3][3] = 72160

您的代码是正常的,但是您用来测试它的图像中的问题是:

维基百科使用图像进行测试


你用的是

对不起,我用的是全彩的。我更新了代码,所以现在它可以被复制和运行。哦,现在我明白了。。。你写的相反:)他们使用8位,我使用32位。谢谢:)。啊对不起我对面的两个链接:)
t[0][0][0] = 28257
t[0][0][1] = 1181
t[0][0][2] = 0
t[0][0][3] = 0
t[0][1][0] = 58
t[0][1][1] = 1414
t[0][1][2] = 156
t[0][1][3] = 0
t[0][2][0] = 0
t[0][2][1] = 0
t[0][2][2] = 0
t[0][2][3] = 0
t[0][3][0] = 0
t[0][3][1] = 0
t[0][3][2] = 0
t[0][3][3] = 0
t[1][0][0] = 2898
t[1][0][1] = 36
t[1][0][2] = 0
t[1][0][3] = 0
t[1][1][0] = 1517
t[1][1][1] = 9858
t[1][1][2] = 1389
t[1][1][3] = 0
t[1][2][0] = 0
t[1][2][1] = 357
t[1][2][2] = 2405
t[1][2][3] = 1
t[1][3][0] = 0
t[1][3][1] = 0
t[1][3][2] = 0
t[1][3][3] = 0
t[2][0][0] = 2794
t[2][0][1] = 3
t[2][0][2] = 0
t[2][0][3] = 0
t[2][1][0] = 7533
t[2][1][1] = 33807
t[2][1][2] = 40
t[2][1][3] = 0
t[2][2][0] = 0
t[2][2][1] = 60782
t[2][2][2] = 371779
t[2][2][3] = 87464
t[2][3][0] = 0
t[2][3][1] = 0
t[2][3][2] = 438
t[2][3][3] = 60218
t[3][0][0] = 0
t[3][0][1] = 0
t[3][0][2] = 0
t[3][0][3] = 0
t[3][1][0] = 123
t[3][1][1] = 4056
t[3][1][2] = 0
t[3][1][3] = 0
t[3][2][0] = 0
t[3][2][1] = 9118
t[3][2][2] = 14215
t[3][2][3] = 118
t[3][3][0] = 0
t[3][3][1] = 0
t[3][3][2] = 12257
t[3][3][3] = 72160