![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Цвет TBitmap [D7]
Неважно © (2010-12-30 13:20:00)Имеется TBitmap небольшого размера. На нем может быть что-то нарисовано в двух цветах (черный и белый). Мне необходимо получить TRUE, если на нем преобладает черный цвет и FALSE, если преобладает белый.
Как решить подобную задачу?
RWolf (2011-01-09 16:57:00) [1]может, всё же погуглить "RGB to YUV"?
Студент (2011-01-09 13:51:00) [2]В модели RGB нету понятий яркости и.т.п.))
А в градациях серого - это когда все три составляющие равны...
Самый быстрый (хоть и грубоватый) способ сделать картинку чёрно-белой - это среднеарифметическое...
Anatoly Podgoretsky (2011-01-09 10:34:00) [3]> Студент (09.01.2011 06:47:14) [14]
У тебя получается, что яркость красного равна яркости синего.
Студент (2011-01-09 06:48:00) [4]Что-то не напечаталось...
>> Можно грубо преобразовать в оттенки серого: (R + G + B) / 3
Студент (2011-01-09 06:47:00) [5]
> Как оттенок цвета ГРУБО преобразовать в белый или черный?
Можно грубо преобразовать в оттенки серого:
Если равно 0 - то чёрный;
Если равно 255 - то белый;
Если значение получилось между ними - то серый цвет;
Можно в процентах сделать: ( ( ( R + G + B) / 3 ) * 100) Div 255
Jeer (2010-12-30 17:56:00) [6]Можно использовать вероятностный метод.
Сделать рандом-координатную выборку около 50% пикселей.
Неважно (2010-12-30 17:45:00) [7]Спасибо.
Я где-то нашел такой вариант:
Color:= Bmp.Canvas.Pixels[Bmp.Height-I,I];
Gray:= (GetRValue(Color) + GetGValue(Color) + GetBValue(Color)) div 3 ;
if Gray> 100 then ...
Серый (2010-12-30 16:42:00) [8]R, G, B: byte;
D: word;
D := High(byte) * 3 div 2;
R + G + B < D - темный
R + G + B >= D - светлый
RWolf (2010-12-30 15:01:00) [9]google "RGB to YUV".
Anatoly Podgoretsky (2010-12-30 14:48:00) [10]> Неважно (30.12.2010 13:57:07) [7]
Не надо ля ля, нам не тяжело привести твою цитату
"На нем может быть что-то нарисовано в двух цветах (черный и белый"
Andy BitOff (2010-12-30 14:05:00) [11]
> нарисовано в двух цветах (черный и белый)
> а вдруг у меня там серый, желтый и т.д.
Эта как?
Неважно (2010-12-30 13:57:00) [12]Понял. А еще вопрос.
Поимел я цвет пиксела. Преобразовал в RGB.
А далее? Там вроде как была какая-то формула определения цвета в черное или белое? Что-то там сравнивается со значением 100. Это к тому, а вдруг у меня там серый, желтый и т.д. Как оттенок цвета ГРУБО преобразовать в белый или черный?
Ega23 (2010-12-30 13:46:00) [13]
> пройтись "крестом".
А какая хрен разница, как перебирать пикселы? Всё равно тебеих все придётся перебрать (точнее, не все, а как критерий преобладания будет достигнут).
А справа налево, слева направо, по синусоиде или буквой зю - без разницы.
Dimka Maslov (2010-12-30 13:44:00) [14]У каждого битмапа есть св-во сканлине
Неважно (2010-12-30 13:39:00) [15]Ну, мало ли. Я бы предпочел пройтись "крестом". Как бы действий меньше и быстрее, вероятно.
Ega23 (2010-12-30 13:33:00) [16]
> По пиксельно
Естественно. Есть другие варианты?
Неважно (2010-12-30 13:31:00) [17]А как получать эти силы?
По пиксельно? Определять цвет всех пикселей моего битмапа? Или как-то иначе (по нескольким пикселам)?
Ega23 (2010-12-30 13:27:00) [18]
> Как решить подобную задачу?
Посчитать количество Сил Тьмы, подсчитать количество Сил Света, сравнить по своему критерию "преобладания".