2011-09-07 46 views
0

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

回答

2

获取位图并遍历每个像素。记住每个人的颜色。然后制作一些平均值 - 将近距离的颜色合并成一个(粉红色,深橙色和红色可以变成只有红色)。然后比较你获得的每种基本颜色(彩虹的颜色)的计数。

+0

我怎样才能使接近的颜色成一个?我被困在这里。 – gizemdemirel

+0

将RGB转换为色调饱和度 - 亮度(http://en.wikipedia.org/wiki/HSL_and_HSV),现在将关闭的颜色聚集在一起。 –

0

Colorific 99个设计已经完成了大部分的辛勤工作,包括将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()));  
3

的V7调色板支持库包括Palette类,它可以让你从图像中提取突出的颜色。这个类,在android.support.v7.graphics发现,可以提取颜色如下:

  • 活力
  • 充满活力的黑暗
  • 热闹的Light
  • 静音
  • 静音黑暗
  • 静音灯

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

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(); 
    } 
} 
});