图像中的主要颜色

时间:2014-06-16 10:19:59

标签: java algorithm opencv colors

我想在图像中找到最现在的颜色。 (在Java / Android中) 我有一个来自openCv的Mat对象,它指的是图像,我可以得到每个像素的RGB值 很容易,但我认为只是平均红色,蓝色和绿色分别不是一个可行的算法。

我认为最好将{r,g,b}作为三重搜索。

你同意吗? 你能帮我实现这个算法,我不知道!提前谢谢

1 个答案:

答案 0 :(得分:0)

以下是执行三重计数的伪代码

    Hashmap<string,int> colors 

    int max;
    string max_color;

    for(int i=0;i<height;i++) {

      for(int j=0;j<width;j++) {

         int count = 0;
         string red = pixel[i][j].red.to_string;
         string green = pixel[i][j].green.to_string;
         string blue = pixel[i][j].blue.to_string;
         string key = red + "," + green + "," + blue;
         if(hashmap contains pixel[i][j]) {

             count = hashmap.get(key)
             count++;
             hashmap.write(key,count);
         }

         else {
           count = 1;
           hashmap.insert(key,count);  
         }

         if(count > max) {
            max = count;
            max_color = key;
         }

      }



    }

  res = max_color.split(',')