Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2011.04.10;
Скачать: [xml.tar.bz2];

Вниз

Цвет TBitmap   Найти похожие ветки 

 
Неважно   (2010-12-30 13:20) [0]

Имеется TBitmap небольшого размера. На нем может быть что-то нарисовано в двух цветах (черный и белый). Мне необходимо получить TRUE, если на нем преобладает черный цвет и FALSE, если преобладает белый.

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


 
Ega23 ©   (2010-12-30 13:27) [1]


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

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


 
Неважно   (2010-12-30 13:31) [2]

А как получать эти силы?
По пиксельно? Определять цвет всех пикселей моего битмапа? Или как-то иначе (по нескольким пикселам)?


 
Ega23 ©   (2010-12-30 13:33) [3]


> По пиксельно

Естественно. Есть другие варианты?


 
Неважно   (2010-12-30 13:39) [4]

Ну, мало ли. Я бы предпочел пройтись "крестом". Как бы действий меньше и быстрее, вероятно.


 
Dimka Maslov ©   (2010-12-30 13:44) [5]

У каждого битмапа есть св-во сканлине


 
Ega23 ©   (2010-12-30 13:46) [6]


> пройтись "крестом".

А какая хрен разница, как перебирать пикселы? Всё равно тебеих все придётся перебрать (точнее, не все, а как критерий преобладания будет достигнут).
А справа налево, слева направо, по синусоиде или буквой зю - без разницы.


 
Неважно   (2010-12-30 13:57) [7]

Понял. А еще вопрос.
Поимел я цвет пиксела. Преобразовал в RGB.

А далее? Там вроде как была какая-то формула определения цвета в черное или  белое? Что-то там сравнивается со значением 100. Это к тому, а вдруг у меня там серый, желтый и т.д. Как оттенок цвета ГРУБО преобразовать в белый или черный?


 
Andy BitOff ©   (2010-12-30 14:05) [8]


> нарисовано в двух цветах (черный и белый)


> а вдруг у меня там серый, желтый и т.д.

Эта как?


 
Anatoly Podgoretsky ©   (2010-12-30 14:48) [9]

> Неважно  (30.12.2010 13:57:07)  [7]

Не надо ля ля, нам не тяжело привести твою цитату

"На нем может быть что-то нарисовано в двух цветах (черный и белый"


 
RWolf ©   (2010-12-30 15:01) [10]

google "RGB to YUV".


 
Серый   (2010-12-30 16:42) [11]

R, G, B: byte;
D: word;

D := High(byte) * 3 div 2;
R + G + B < D  - темный
R + G + B >= D - светлый


 
Неважно   (2010-12-30 17:45) [12]

Спасибо.

Я где-то нашел такой вариант:

Color:= Bmp.Canvas.Pixels[Bmp.Height-I,I];
Gray:= (GetRValue(Color) + GetGValue(Color) + GetBValue(Color)) div 3 ;
if Gray> 100 then ...



 
Jeer ©   (2010-12-30 17:56) [13]

Можно использовать вероятностный метод.
Сделать рандом-координатную выборку около 50% пикселей.


 
Студент   (2011-01-09 06:47) [14]


> Как оттенок цвета ГРУБО преобразовать в белый или черный?


Можно грубо преобразовать в оттенки серого:
Если равно 0 - то чёрный;
Если равно 255 - то белый;
Если значение получилось между ними - то серый цвет;

Можно в процентах сделать: ( ( ( R + G + B) / 3 ) * 100) Div 255


 
Студент   (2011-01-09 06:48) [15]

Что-то не напечаталось...

>> Можно грубо преобразовать в оттенки серого:  (R + G + B) / 3


 
Anatoly Podgoretsky ©   (2011-01-09 10:34) [16]

> Студент  (09.01.2011 06:47:14)  [14]

У тебя получается, что яркость красного равна яркости синего.


 
Студент   (2011-01-09 13:51) [17]

В модели RGB нету понятий яркости и.т.п.))
А в градациях серого - это когда все три составляющие равны...

Самый быстрый (хоть и грубоватый) способ сделать картинку чёрно-белой - это среднеарифметическое...


 
RWolf ©   (2011-01-09 16:57) [18]

может, всё же погуглить "RGB to YUV"?



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2011.04.10;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.004 c
15-1292924463
12
2010-12-21 12:41
2011.04.10
Вот бы еще чего посмотрел - столкновение галактик.


15-1293027819
картман
2010-12-22 17:23
2011.04.10


15-1293091737
Recurse
2010-12-23 11:08
2011.04.10
Тема - благодарность


15-1293107643
Медвежонок ХМЛ
2010-12-23 15:34
2011.04.10
все таки должен ли он только звонить, или не только :)


11-1232967128
BMouradov
2009-01-26 13:52
2011.04.10
Выполнение команд до создания окна в МСК





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский