У меня есть следующий, изображаемый препроцессор с некоторыми функциями OpenCV:Получить правильный HSV цвета InRange в OpenCV (Java)
Теперь я пытаюсь получить количество кирпичей каждого цвета (в этом случай 1 для каждого цвета). Это все цвета, которые у меня есть.
Мой план состоял в том, чтобы пересекать все цвета, использовать функцию OpenCV «inRange» и получить размер области. Моя проблема заключается в распознавании разных цветов. Я попробовал красный цвет и изо всех сил пытался найти хороший диапазон. После того, как я спросил Google, я понял, что мне нужно использовать цвета HSV, чтобы получить хороший диапазон с оттенком.
Так что я написал этот код (в Java по некоторым причинам):
Mat img; //img is given from previos code
Mat hsv = img.clone();
Imgproc.cvtColor(img, hsv, Imgproc.COLOR_BGR2HSV);
После этого я ожидал получить изображение, с помощью которого я могу получить различные цвета. На самом деле я получил это:
В этом изображении цвета почти разрушенное ... красный и светло-зеленый выглядят те же и другие цвета совершенно разные тоже.
Теперь мой вопрос: Что-то не так? Можно ли отличить кирпичные цвета Lego? Что я могу сделать для этого? Я использую OpenCV 3.1.0 для Java.
Большое спасибо, Dennis
Взгляните [здесь] (http://stackoverflow.com/a/31465462/5008845) – Miki
@Miki Спасибо, но это не работает для меня. Например: я пытаюсь получить синий цвет. В ответах говорится, что «синий - это 120 + 15 чувствительность». Но в изображении HSV нет синего (в RGB-изображении есть 2 синих кирпича). Моя проблема ist, что преобразование HSV уничтожает все цвета, и я не могу получить правильные цвета ... синий, например, находится в фиолетовой доске и правой (черной) области. – Dentastic