获得最常出现的图像颜色

时间:2011-09-07 10:47:38

标签: java android image-processing

我目前正在尝试为盲人开发T恤颜色分析项目。对于这个项目,我应该在图像中获得最常出现的颜色或原色调,以识别T恤的颜色。我从互联网上寻找解决方案,但我找不到合适的解决方案。我正在为我的项目使用Java。

3 个答案:

答案 0 :(得分:3)

v7调色板支持库包含Palette类,可让您从图像中提取突出的颜色。这个类可以在android.support.v7.graphics中找到,它可以提取以下颜色:

  • 活力
  • 充满活力的黑暗
  • 充满活力的光明
  • 静音
  • Muted Dark
  • 柔和的光线

要在项目中使用Palette类,请将以下Gradle依赖项添加到应用程序的模块中:

dependencies {
   ...
   compile 'com.android.support:palette-v7:21.0.0'
}

用法:

Palette.generateAsync(bitmap, new Palette.PaletteAsyncListener() {
 public void onGenerated(Palette palette) {
     // Do something with colors...

     //You can select any of the colors.
     Palette.Swatch swatch = palette.getVibrantSwatch();
     if(swatch!=null){ // mind it, it can be null sometime.
        int color = swatch.getRgb();
     }
 }
});

答案 1 :(得分:2)

获取位图并浏览每个像素。记住每一个的颜色。然后做一些平均值 - 将近色调制成一个(粉红色,深橙色和红色只能变成红色)。然后比较每种基本颜色(彩虹色)的计数。

答案 2 :(得分:0)

来自99个设计的

Colorific完成了大部分的努力工作,包括将RGB转换为CIE实验室颜色,以确保将感知上相似的颜色拼凑在一起,以及排除背景颜色。它在Python中,可以从命令行运行。所以你可以使用以下内容:

    Runtime r = Runtime.getRuntime(); 
    Process p = r.exec(  ((URL) this.getClass().getResource("/python/colorific")).getFile() +" "+filename);
    String out = CharStreams.toString(new InputStreamReader(p.getInputStream()));