Вопрос

Я пытаюсь написать расширение в 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
.

... Но не беру мое слово для этого!Вы должны поэкспериментировать, чтобы увидеть, какой диапазон ваш датчик остается, когда на желтой бумаге и т. Д.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top