Canvas - это круто! - страница 96

 
Nikolai Semko #:
Наверное,  если R>G && R>B, то это уже красный оттенок 
Хотя конечно- это весьма условно.
Ведь цвет 0xFfFE00 явно жёлтый, а не красный.
Тогда напрашивается вводить соотношение цветов (G/R, B/R). Но и в этом случае могут быть казузы. Например, цвет 0xFFFBFB явно красный,  но при применении соотношения это будет недостаточно красным. 
И непонятно, оранжевый- это красный?
Короче очень субъективная задача.
 
Denis Kirichenko #:
Мне нужно из всех цветов RGB выбрать к примеру все с красным оттенком. Проще говоря, все цвета, которые имеют отношение к красному. Знаю, что там 16,7 млн. цветов. Есть какой-то несложный подход лоя такой задачи? Спасибо.

Если по простому, то если R=255 и G<B, то цвета будут с красным оттенком.

А если по сложному, то можно обучить нейронку на примерах, демонстрирующих нужную цветовую гамму, а потом использовать модель как детектор нужного оттенка.))

 

любопытства ради, посмотрел как это делается...

это-ж элементарно :-) 

по формулЕ определяем что цвет близок к выбранному красному и вуалля :-)

(википедиа https://ru.wikipedia.org/wiki/Формула_цветового_отличия )

 
Красный оттенок будут иметь все цвета, у которых компонента R не равна нулю. Хотя внешне, при малом значении R, они могут быть совсем не похожи на красный цвет, однако если значение R постепенно увеличивать, можно ясно увидеть как в исходном цвете проступает красный оттенок. Задача элементарная. )
 
Andrey Dik #:

Если по простому, то если R=255 и G<B, то цвета будут с красным оттенком.

Можно даже так проверять с более широким охватом:

G < B < R: красные тона

B < R == G: желтые

...и так далее не только для основных трех цветов, но и их комбинаций.

 
Пожалуй стоит добавить, что не только увеличение значения компоненты R усиливает красный оттенок, но и уменьшение значений компонент G и/или B. 

Однако, не все оттенки красного мозг может/хочет интерпретировать как таковые. Едва ли в чисто желтом цвете можно найти красный оттенок, хотя значение компоненты R в нем максимальное. Тоже самое относится и к чистому белому цвету. Да и в любом сером цвете есть красный оттенок на протяжении всего диапазона от белого до черного. В общем, как сказал Николай выше, восприятие оттенков вещь субьективная.

 Вряд ли существует формула расчета цветов красного оттенка в "субьективном" спектре. Действительно, нейронка могла бы помочь,... но стоит ли игра свечь? Для профессионального дизайна, возможно да.
 

Просто задайте вопрос нейронке GPT4o или другой новой, чтобы написала кусок кода определения оттенка красного на питоне или C++, дальше разберётесь

Сюда вставлять не буду, но ИИ справился.

 
Vitaliy Kuznetsov #:

Просто задайте вопрос нейронке GPT4o или другой новой, чтобы написала кусок кода определения оттенка красного на питоне или C++, дальше разберётесь

Сюда вставлять не буду, но ИИ справился.

Нет. Эта задача пока ей не по зубам.
Будет сильно тупить 
Здесь то делов - пару строк кода после уточнения постановки задачи.
 

Холст - это круто , но только теоретически!

Почему? Ни один из приведенных примеров не является реалистичным, поскольку в коде приходится часто проверять график самостоятельно, фактически каждый тик, так как во многих случаях при изменении графика не срабатывает CHARTEVENT_CHART_CHANGE. Одним из таких случаев является рост новых свечей в самом низу графика вниз или в самом верху вверх. В этот момент и в случае использования CCanvas в области графика все становится недействительным, ни одна цена больше не совпадает.

И чтобы сохранить точность, вам нужно использовать ChartGetInteger или ChartGetDouble для max- или min-цены и даже других данных метрики графика, каждый тик. НО: Один вызов этой функции занимает до тысячи миллисекунд. А куча вызовов, естественно, занимает секунды и просто замораживает все.

Я не понимаю, почему эта штука до сих пор не исправлена. Ни пропажа событий, ни проблема с таймингом. И почему для таких принципиально важных вещей, как метрики графика, которые нужны просто для визуальной точности, почему нет структуры со всеми данными метрик сразу, если факт, что есть проблема с таймингом при каждом вызове?

Проверьте это - шесть лет назад, всем наплевать.

https://www.mql5.com/en/forum/326220

CHARTEVENT_CHART_CHANGE - Missing events (Bug?)
CHARTEVENT_CHART_CHANGE - Missing events (Bug?)
  • 2019.11.11
  • Doerk Hilger
  • www.mql5.com
Hi, my understanding of logic regarding this event is, that it is sent when the chart changes. But it does not in many circumstances in MT5: 1...
 
Doerk Hilger #:

Холст - это круто , но только теоретически!

Почему? Ни один из приведенных примеров не является реалистичным, поскольку в коде приходится часто проверять график самостоятельно, фактически каждый тик, так как во многих случаях при изменении графика не срабатывает CHARTEVENT_CHART_CHANGE. Одним из таких случаев является рост новых свечей в самом низу графика вниз или в самом верху вверх. В этот момент и в случае использования CCanvas в области графика все становится недействительным, ни одна цена больше не совпадает.

И чтобы сохранить точность, вам нужно использовать ChartGetInteger или ChartGetDouble для max- или min-цены и даже других данных метрики графика, каждый тик. НО: Один вызов этой функции занимает до тысячи миллисекунд. А куча вызовов, естественно, занимает секунды и просто замораживает все.

Я не понимаю, почему эта штука до сих пор не исправлена. Ни пропажа событий, ни проблема с таймингом. И почему для таких принципиально важных вещей, как метрики графика, которые нужны просто для визуальной точности, почему нет структуры со всеми данными метрик сразу, если факт, что есть проблема с таймингом при каждом вызове?

Проверьте это - шесть лет назад, всем наплевать.

https://www.mql5.com/en/forum/326220

Поддерживаю. Тоже столкнулся с запазданием событий CHARTEVENT_CHART_CHANGE. Также, при переключении графиков штатная функция ChartGetInteger возвращает неверные размеры графика. Происходит это так: при переключении графика событие CHARTEVENT_CHART_CHANGE приходит в функцию OnChartEvent() более одного раза и в одном из вызовов этой функции возвращает неверные размеры графика. В свободное время напишу код для воспроизведения.