2017-01-21 1 views
-1

지역을 캡처하여 HSB에서 Dominant 색상을 찾는 프로젝트가 있는데, 나는 dominant 색상을 찾기 위해 this article을 사용했습니다. 내 코드에서 두 HSB 색상 비교

나는 내 프로젝트의 시작에서 지배적 인 색을 얻고, 매 초마다 나는 그 지역의 사진을 촬영하고이 코드를 사용하여 첫 번째 색과 비교 : 색상 인 경우

private bool IsColorChanged(Structures.HSB hsb) 
    { 
     //hsb is the newest dominant color of that area 
     //m_refcolor is the main color of that area which I got at startup 
     Structures.HSB localhsb; 
      localhsb.Hue = Math.Abs(hsb.Hue - m_refcolor.Hue); 
      localhsb.Saturation = Math.Abs(hsb.Saturation - m_refcolor.Saturation); 
      localhsb.Brightness = Math.Abs(hsb.Brightness - m_refcolor.Brightness); 
      if ((localhsb.Hue >= m_hsbtr.Htreshold) || (localhsb.Saturation >= m_hsbtr.Streshold) || (localhsb.Brightness >= m_hsbtr.Btreshold)) 
       return true; 
     return false; 
    } 

anycolor로 변경되었습니다. 사용자에게 이벤트를 발생시킵니다.

최종 목표는 색상이 특정 색상으로 변경되었는지 아닌지 확인하는 것입니다. 그러나 나는 무엇을해야하는지 모른다. HSB와 어떻게 비교해야할지 모르겠다. 사용 된 코드는 색상이 어떤 색상으로 변경되었는지 알고 싶을 때만 사용된다.

저는 C#을 사용했지만 다른 언어에는 문제가 없습니다. 어떤 도움이라도 굉장합니다.

+2

당신이 관심이있을 수 있습니다 [색상 거리 의이 토론] (http://stackoverflow.com/questions/27374550/how-to-compare-color-object-and-get-closest-color-in-an- color : 27375621? s = 1 | 1.0460 # 27375621) – TaW

+0

"최종 목표는 색상이 특정 색상으로 변경되었는지 확인하는 것입니다.": hsb.hue = thisparticularcolor.hue 화재 이벤트 인 경우 그냥 수행합니다. 당신은 더 이상 당신을 혼란스럽게하는 토론이 필요하지 않습니다. – gpasch

+0

당신은 맞습니다,하지만 예를 들어 붉은 색은 다양한 가치가 있습니다. 나는 진한 빨간색의 영역을 가지고 있으며, 그것이 더 가벼워 졌는지 아닌지를 알고 싶습니다. 심지어는 검은 색이어서 빨간색이나 녹색 또는 노란색이됩니다. 그래서 나는 당신이 말했듯이 이것이 쉽지 않다고 생각합니다. – Arta

답변

0

내 문제는 ColorMine 프로젝트를 사용하여 더 이상 코딩하지 않고 해결되었습니다.

이 프로젝트는 Delta-E를 사용하여 색상을 비교하고 많은 색상 공간을 지원합니다.