Вопрос решился , всем спасибо за информативность и участие) ![]()
Я позволил себе пронумеровать тезисы, чтобы понятно было, что к чему относится.
- Вся разрядность цветов - это 16777216 по 3 байта в каждом. Итого: более 50 млн. чисел. Как Вы с таким объемом собираетесь работать вручную?
- Это не будет работать в общем случае. Пример: “съем” дает (0, 10, 0) - это, безусловно, зеленый. В ближайшей области окажется (10, 0, 10) - это, безусловно, фиолетовый.
- Сравнение не приведет к желаемому результату. Пример: (0, 100, 0) - это, безусловно, зеленый, но результат сравнения окажется отрицательным.
- А где здесь обучение?
PS. Да, я не отрицаю, что алгоритм простейший, но он, увы, нерабочий.
это уже третий вариант от @smagluk за время обсуждения… ждем следующую версию. Надо сказать, что от раза к разу он (алгоритм) улучшается
Мне показалось, что алгоритм один и тот же, только к нему добавляются … даже не уточнения, а просто конкретизирующие замечания. Например, в последнем - откуда брать те самые a1…b3, которые фигурируют в первом.
Но чем больше конкретизации, тем очевиднее становится неработоспособность алгоритма.
Более того, представляется очевидным, что формулировка ограничений на абсолютные значения составляющих цвета принципиально непродуктивна: условия нужно формировать на основе их относительной величины. Ну, например, что величина G должна минимум вдвое превосходить остальные величины (это как пример, не гарантирую, что это будет работать).
Считаю вашу идею с переводом цвета в HSV лучшей в ветке . Скорее единственной работоспособной.
Нет, можно и непосредственно в RGB, но это требует несколько более обширных знаний от пользователя о структуре цвета. А преобразование RGB-HSV легко гуглится и работа с HSV интуитивно понятнее.
PS. Кстати, мне лень, но ТС я бы посоветовал попробовать и предложенный мною в последнем сообщении алгоритм, т.е. что-то вроде
if(((G/2)>B) && ((G/2)>R))
А если ESP применить? Или Raspberry? У них памяти много
А кстати, зачем все эти заморочки? Кто нибудь этот датчик в руках держал? Он, кроме RGB, прекрасно определяет цветовую температуру в кельвинах. С точностью плюс-минус 10 градусов. Которая практически не зависит от освещённости объекта, в отличие от RGB.
Одна строка:
colorTemp = tcs.calculateColorTemperature(r, g, b);
Проверил на светодиодных лампочках ( на них написана температура) и на разноцветных бумажках.
Осталось выяснить, как коррелируют цветовая температура и цвет.
На 500р.
Заказчика устраивает соотношение цена/качество.
жёлтая бумажка даёт 2300
В первую очередь интересно, сколько даст белый цвет. С точки зрения “научной базы” столько же, сколько и зеленый.
Это к тому, что датчик должен не только реагировать на зеленый, но еще и НЕ реагировать на НЕ зеленый.
Вот .
Тут вот пишут:
Цветовая температура – это температура абсолютно черного тела, при которой оно испускает излучение того же цветового тона, что и рассматриваемое излучение. Проще говоря, температура 5000К – это цвет, который приобретает абсолютно черное тело при нагревании его до 5000К. Цветовая температура оранжевого цвета – 2000К, это означает, что абсолютно черное тело необходимо нагреть до температуры 2000К, чтобы оно приобрело оранжевый цвет свечения.
И даже есть формула Планка, которая описывает кривую в цветовом пространстве, соответствующую цветовой температуре.
Вот данная кривая.
И, похоже, у нас есть проблема - кривая не проходит через область зелёного цвета. Тел, получивших зелёный оттенок вследствии нагрева, тоже не припоминаю.
Хотя, в стране бармалеевой все иначе, видать, и за 500р можно даже в таком заказчика убедить.
Попробуй. Тебе там работы на 15 минут
Не нашёл критерий, а нашёл бумажку, которая содержит достаточно других оттенков, кроме зелёного, чтобы “показать” цифирь 3200. Другая зеленая бумажка легко даст 4000 или 2500.
Сходи в магазин и посмотри на включенную лампочку с температурой 3000К.
Расскажешь потом - есть там сочная зелень или нет.
И да, меня беспокоит вот такое исполнение без наличия активированного сознания. Хотя, понимаю - раньше за 200р мозги дурил, а тут 500. Ударила кровь в голову, отключила ум.
Ну хочишь, я тебе ещё своих 500р пришлю?
Посмотрел на лампочку, у меня такая дома есть. Нету зелени. Вообще. Наверное, всё таки разогревается до 3000 градусов, поэтому через зелень не переходит. А ты зелёные звёзды видел? Я нет.
Хочу. Но не мне пришлешь, а Чечако. И подтверждение сюда выложишь.
А он напишет программу?
А почему не бывает зелёных звёзд? И синих
