0

是这样的:

公共颜色颜色更多时间重复(){

而且我不知道如何创建一个变量来计算不同的颜色并返回我重复更多次的变量。

这个想法是计算图像的所有颜色并给出重复次数更多的颜色,我尝试使用 *2 旅程 for 并且当重复任何颜色时它开始计数,最后它返回一个更重复。

    count=0;
    Color moreRepeated = null;
    for(int i=0;i< high;i++){
    for(int j=0;j<wide;j++){ *
4

2 回答 2

0

Adapting Bjen's answer, to actually count them:

Map<Integer,Integer> rgbCounts = new HashMap<Color,Integer>();
BufferedImage image = ImageIO.read(new File("test.png"));    
int w = image.getWidth();
int h = image.getHeight();
for(int y = 0; y < h; y++) {
    for(int x = 0; x < w; x++) {
        int pixel = image.getRGB(x, y);
        // count it;
        Integer count = rgbCounts.get( pixel);
        rgbCounts.put( pixel, (count != null) ? count+1 : 1);
    }
}

For you to do -- find the highest Count in the map, and return the Color from RGB.

于 2013-05-06T01:33:38.433 回答
0

Stackflow 上有一个很好的答案。我已经发布了下面的代码以及讨论的链接。

Set<Integer> colors = new HashSet<Integer>();
    BufferedImage image = ImageIO.read(new File("test.png"));    
    int w = image.getWidth();
    int h = image.getHeight();
    for(int y = 0; y < h; y++) {
        for(int x = 0; x < w; x++) {
            int pixel = image.getRGB(x, y);     
            colors.add(pixel);
        }
    }
    System.out.println("There are "+colors.size()+" colors");

https://stackoverflow.com/a/5253698/2353014

于 2013-05-05T23:55:52.387 回答