Группировка RGB Цвета для кирпича NXT
-
12-12-2019 - |
Вопрос
Я пытаюсь написать расширение в Netlogo для кирпича NXT.Для подключения кирпича я использую Lejos.У меня проблема с цветовым датчиком.Я хочу написать простой метод, который возвращает цвет датчика как число, такое как желтый: 1, красный: 2 и т. Д., Но датчик двигателя всегда возвращает разные цвета RGB на одной поверхности.Например, я положил его через желтую бумагу, цвета RGB: [236 189 104], [247 202 108] .. Если он возвращал уникальные номера RGB для тех же поверхностных цветов, я бы классифицировал их в соответствии с диапазоном RGB и датьУникальный номер для каждого цвета.У вас есть идеи, как я могу это сделать?Кроме того, он не будет работать на разных поверхностях.Только для этого для моих бумажных цветов (желтый, синий, зеленый) будет достаточно для меня.Спасибо.
Решение
Если я правильно понял то, что вы имеете в виду, метод Java.awt.Color.rgBtohsb может помочь вам.Код Java, как это:
float[] hsb = Color.RGBtoHSB(red, green, blue, null);
float hue = hsb[0];
.
(где red
, green
и blue
являются переменными, содержащими результат датчика)
... даст вам «оттенок» вашего цвета в качестве генеракодицетагкода между 0 и 1, что должно быть достаточно, чтобы увидеть, является ли он оттенок желтого, синего, зеленого или чего-то еще, если вы определите соответствующие диапазоныОтказЭто должно быть очень примерно что-то вроде:
Yellow: 0.1 < hue < 0.2
Blue: 0.5 < hue < 0.7
Green: 0.25 < hue < 0.45
.
... Но не беру мое слово для этого!Вы должны поэкспериментировать, чтобы увидеть, какой диапазон ваш датчик остается, когда на желтой бумаге и т. Д.