2014-06-16 2 views
0

이미지에서 가장 현재의 색을 찾고 싶습니다. (Java/Android에서) 이미지를 참조하는 openCv의 Mat 객체가 있는데 각 픽셀의 RGB 값을 쉽게 얻을 수 있지만간단하지만 빨강, 파랑 및 녹색을 따로 따로 따로 따로 사용할 수있는 알고리즘이 없다고 생각합니다. .이미지의 주된 색

가장 자주 찾는 {r, g, b}을 (를) 트리플로 검색하는 것이 좋습니다.

동의합니까? 그리고이 알고리즘을 구현하는 데 도움이 될 수 있습니까? 다음 사전

+0

의 수를 할 수있는 의사 코드입니다. 즉, {0,0,0}은 1000 픽셀에 대해 발생하며 990 배 {255,0,0}, 990 배 {254,1,0}, 990 배 {255,1,0} 990 배 {255,0,1} 등등 몇 가지 990 세트를 더합니다. 이게 효과가 있다고 생각하니? – laune

+0

색상 범위를 색상으로 정의 하시겠습니까? 아니면 모두 256 * 256 * 256 색상입니까? –

답변

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(',') 
+0

Thankkkkkkkk youuuu :) – Slayer

관련 문제