2011-09-07 58 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(); 
    } 
} 
});