Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.10.2013, 03:16   #1
Nice Plant
Пользователь
 
Регистрация: 18.12.2009
Сообщений: 23
По умолчанию Инверсия синей компоненты изображения

Доброго времени суток.


Уважаемые знатоки! Требуется помощь в реализации данной задачи: "Инверсия синей компоненты изображения. Формат BMP"

Хотелось бы узнать способ/метод, как это реализовать.

Заранее спасибо.
Nice Plant вне форума Ответить с цитированием
Старый 20.10.2013, 04:13   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Телепатия подсказывает что все синий пиксели должны иметь противоположный цвет. Если так, то цикл по пикселям и инверсируете цвета.
Человек_Борща вне форума Ответить с цитированием
Старый 20.10.2013, 13:13   #3
Nice Plant
Пользователь
 
Регистрация: 18.12.2009
Сообщений: 23
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Телепатия подсказывает что все синий пиксели должны иметь противоположный цвет. Если так, то цикл по пикселям и инверсируете цвета.
вот именно)) а какой цвет?))
Nice Plant вне форума Ответить с цитированием
Старый 20.10.2013, 13:26   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Вариант1. ColorToRGB. К каждой состовляющей NOT применить. RGBToColor
Вариант2. ColorToRGB. СolorRGBToHLS. Для HLS NOT нельзя, нужно из 240 вычетать. ColorHLSToRGB. RGBToColor
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 20.10.2013, 13:39   #5
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Либо XOR над полным Color, либо (255-компонент каждого из R-G-B). Это будет инверсия.

Вот только сочетаемые цвета тут не совсем могут получиться, но это уже цветовосприятие, а у каждого оно индивидуально.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 20.10.2013, 13:58   #6
Nice Plant
Пользователь
 
Регистрация: 18.12.2009
Сообщений: 23
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
Либо XOR над полным Color, либо (255-компонент каждого из R-G-B). Это будет инверсия.

Вот только сочетаемые цвета тут не совсем могут получиться, но это уже цветовосприятие, а у каждого оно индивидуально.

т.е. если я применю XOR только для синей компоненты, то сделают инверсию исключительно этого канала?)
Nice Plant вне форума Ответить с цитированием
Старый 20.10.2013, 14:32   #7
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

TColor - 4 байта:
0000 0000 0000 0000 0000 0000 0000 0000
Делаете XOR c:
0000 0000 1111 1111 0000 0000 0000 0000
Чтобы инвертировать синий.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 21.10.2013, 15:21   #8
cyberdev
Форумчанин
 
Аватар для cyberdev
 
Регистрация: 10.10.2013
Сообщений: 150
По умолчанию

Самый просто способ - использовать стандартные функции
Код:
function BInvert(C: TColor): Integer;
var
  R,G,B: Byte;
  CRGB: Integer;
begin
  CRGB := ColorToRGB(C);
  R := GetRValue(CRGB);
  G := GetGValue(CRGB);
  B := GetBValue(CRGB);
  B := 255 - B;
  Result := RGB(R, G, B);
end;
Сайт о программировании и трехмерной графике - cybersite.ucoz.net

Последний раз редактировалось cyberdev; 21.10.2013 в 17:13.
cyberdev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Инверсия строк УрбанСникерс Общие вопросы Delphi 16 13.04.2013 23:44
Инверсия массива Dima-War Общие вопросы C/C++ 3 30.10.2012 22:13
Инверсия цвета Zibiv Помощь студентам 1 21.12.2011 18:56
Снова Инверсия) Lag Общие вопросы C/C++ 2 10.05.2010 21:31
Инверсия Witaliy Общие вопросы Delphi 2 12.05.2008 19:23