2016-06-01 2 views
0

I가 다음과 같은 특정 OpenCV의 기능이 사전 처리, 군데 : 나는이에 (각 색상의 벽돌의 수를 얻으려고OpenCV의 (자바)에서 마우스 오른쪽 HSV 색상 inRange 받기

이제

Different colored lego bricks

1 색마다 케이스 1). 이것들은 내가 가진 모든 색입니다.

내 계획은 모든 색상을 반복하고 OpenCV 함수 "inRange"를 사용하여 영역 크기를 얻는 것이 었습니다. 내 문제는 다른 색상을 인식하는 것입니다. 나는 붉은 색을 시도하고 좋은 범위를 찾는 데 어려움을 겪었다. Google에 이해 한 후에 HSV 색상을 사용해야 색상 값이 좋은 범위를 얻을 수 있습니다. 나는 내가 다른 색상을 얻을 수있는 이미지를,이 예상이 후

Mat img; //img is given from previos code 
Mat hsv = img.clone(); 
Imgproc.cvtColor(img, hsv, Imgproc.COLOR_BGR2HSV); 

:

그래서 나는 (어떤 이유로 자바)이 코드를 썼다. 사실 나는이있어 : 색상이 거의 파괴이 이미지

Weird HSV image

을 ... 붉은 색과 밝은 녹색 같은 다른 색상도 완전히 다른 본다.

이제 내 질문 : 내가 잘못 했습니까? 레고 벽돌 색상을 구분할 수 있습니까? 이것을 달성하기 위해 무엇을 할 수 있습니까? Java 용 OpenCV 3.1.0을 사용하고 있습니다.

덕분에 많이, 데니스

+1

은 [여기]를 보면 (http://stackoverflow.com/a/31465462/5008845) – Miki

+0

@Miki 감사합니다,하지만 이것은 나를 위해 작동하지 않습니다. 예 : 나는 파란을 얻으려고 노력합니다. 대답은 "푸른 색은 120 + - 15 감각"입니다. 그러나 HSV 이미지에는 파란색이 없습니다 (RGB 그림에는 두 개의 파란색 벽돌이 있음). 내 문제는 ist, 그 HSV 변환이 모든 색상을 파괴하고 내가 옳은 색상을 얻을 수 없다 ... 푸른 예를 들어 보라색 보드와 오른쪽 (검은 색) 영역에서 발견된다. – Dentastic

답변

1

나는 내 실수를 발견하고 나는 그것을 자랑하지 않다. 단순한 오타였습니다. 이것을 고치고 @Miki의 도움으로 내 색을 찾을 수 있습니다.

내 실수 :

Mat img; //img is given from previos code 
Mat hsv = img.clone(); 
Imgproc.cvtColor(img, hsv, Imgproc.COLOR_BGR2HSV);  
Core.inRange(img, lowerBlue, upperBlue, hsv); //img 

대신

Mat img; //img is given from previos code 
Mat hsv = img.clone(); 
Imgproc.cvtColor(img, hsv, Imgproc.COLOR_BGR2HSV);  
Core.inRange(hsv, lowerBlue, upperBlue, hsv); //hsv 

사실

의 ... 난 HSV에 이미지를 번역 inRange의 RGB의 사진을 찍었().

감사