2012-09-13 2 views
1

다른 모든 색상은 무시하고 싶습니다. 난 그냥 흰색과 노란색 사이의 색상을 계산 싶어요 (밝은 노란색, 밝은 노란색 .. 흰색까지). 그런 다음 특정 이미지가 노란색인지 평가하십시오. 그게 가능하니?노랑색이 어떻게 나타나는지 어떻게 감지 할 수 있습니까?

저는 Bitmap.getPixel()으로 놀았지만 다른 색상을 무시하는 방법을 알 수 없습니다. 이 예에서

enter image description here

, 1 화상은 밝은 노란색과 흰색 사이의 색을 더 갖고 있기 때문에 하나가 선택 될 것이다.

노란 색만 감지하려면 어떻게해야합니까?

답변

11

글쎄, 나는 픽셀의 색조에 중점을 둘 것이다. 이이 범위에 있거나 어디 다음 정량화 할 수

// get HSV values for the pixel's colour 
float[] pixelColorHsv = new float[3]; 
Color.colorToHSV(Bitmap.getPixel(x,y), pixelColorHsv); 

가 무엇을 할 수 있습니다 노란색이지만 범위는 72과 49 사이의 수 (당신은 아이디어를 얻을 this tool로 재생할 수) :이 코드를 사용하여 밝기와 채도가 얼마나 높거나 낮은가.

1

Bitmap.getPixel(int x, int y) 메서드는 해당 픽셀의 RGB 값을 가진 Color 개체를 반환합니다. 노란색은 빨간색과 녹색의 조합이므로 곧은 노란색 RGB 트리플은 (255, 255, 0)이됩니다. 맞습니까? 어둡게되면 적색과 녹색 값을 모두 낮 춥니 다. 당신이 더 밝게되면, 당신은 파란 값을 가져옵니다. 그래서 기본적으로 주어진 픽셀의 RGB 값이 (255, 255, 0)으로 "근접"된 다음 전체 픽셀 값을 누적하는 방법을 찾아야합니다. 두 번째 이미지에 대해서도 동일한 작업을 수행 한 다음 두 결과를 비교합니다.

+0

두 번째 생각에서 Jason의 방법은 구현하기가 훨씬 쉽습니다. 'getPixel'을 사용하여'Color' 객체를 얻은 다음'Color.colorToHSV'를 사용하여 HSV로 변환하고 H (색조)를 노란색의 유효한 범위로 간주되는 범위와 비교하십시오. – mtrewartha

관련 문제