Главная страница
    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.005 c
15-1293029242
ocean
2010-12-22 17:47
2011.04.10
Нашел на складе новый рутер


2-1294913584
Finder
2011-01-13 13:13
2011.04.10
замена OleVariant


1-1252018584
voyager
2009-09-04 02:56
2011.04.10
Возврат значения из программы


2-1294871283
Ghost del vonte
2011-01-13 01:28
2011.04.10
Проблема при удалении последней вкладки на TabSet


15-1293027819
картман
2010-12-22 17:23
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский