Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Цвет 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]


> Как решить подобную задачу?

Посчитать количество Сил Тьмы, подсчитать количество Сил Света, сравнить по своему критерию "преобладания".


Наверх

Титульная страница Поиск, карта сайта Написать письмо