Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/16: Рейтинг темы: голосов - 16, средняя оценка - 4.94
 Аватар для Imm0rt@L
6 / 5 / 0
Регистрация: 09.06.2011
Сообщений: 25

Перевод изображения в красный цвет, сохранив градации яркости

25.06.2012, 15:30. Показов 3201. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно перевести изображение в красный цвет, сохранив градации яркости. Есть код но он переводит в серый цвет:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void __fastcall TForm1::Button2Click(TObject *Sender)
{
  Image2->Picture->Bitmap->PixelFormat = pf24bit;
  Image2->Picture->Bitmap->Width = Image1->Width;
  Image2->Picture->Bitmap->Height = Image1->Height;
  Image1->Perform(WM_PAINT, (WPARAM)Image2->Picture->Bitmap->Canvas->Handle, 0);
 
  for (int y = Image2->Picture->Bitmap->Height - 1; y >= 0; --y)
  {
    TRGBTriple* scanLine = (TRGBTriple*)Image2->Picture->Bitmap->ScanLine[y];
    for (int x = Image2->Picture->Bitmap->Width - 1;  x >= 0; --x)
    {
      const BYTE red =  0.322 * scanLine[x].rgbtRed +
                        0.550 * scanLine[x].rgbtGreen +
                        0.071 * scanLine[x].rgbtBlue;
      scanLine[x].rgbtGreen = red;
      scanLine[x].rgbtRed = red;
      scanLine[x].rgbtBlue = red;
    }
}}
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.06.2012, 15:30
Ответы с готовыми решениями:

Изменение яркости контрастности изображения. Бинаризация изображения
Товарищи программисты помогите с разработкой алкоритма для изменеие яркости контрастности изображения, а токже осуществить бинаризацию...

Перевод в градации серого части изображения
Доброго времени суток! Нужна помощь. Возникла проблема при выполнении вот такой работы: "Создайте функцию, выводящую на изображение...

Окрашивание изображения в Красный цвет
Есть у кого нормальный рабочий пример? Качал с интернета примеры с шейдерами, что-то ни один нормально не работает.

4
 Аватар для T2skler
50 / 50 / 6
Регистрация: 16.05.2012
Сообщений: 232
25.06.2012, 15:55
Цитата Сообщение от Imm0rt@L Посмотреть сообщение
Нужно перевести изображение в красный цвет, сохранив градации яркости. Есть код но он переводит в серый цвет:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void __fastcall TForm1::Button2Click(TObject *Sender)
{
  Image2->Picture->Bitmap->PixelFormat = pf24bit;
  Image2->Picture->Bitmap->Width = Image1->Width;
  Image2->Picture->Bitmap->Height = Image1->Height;
  Image1->Perform(WM_PAINT, (WPARAM)Image2->Picture->Bitmap->Canvas->Handle, 0);
 
  for (int y = Image2->Picture->Bitmap->Height - 1; y >= 0; --y)
  {
    TRGBTriple* scanLine = (TRGBTriple*)Image2->Picture->Bitmap->ScanLine[y];
    for (int x = Image2->Picture->Bitmap->Width - 1;  x >= 0; --x)
    {
      const BYTE red =  0.322 * scanLine[x].rgbtRed +
                        0.550 * scanLine[x].rgbtGreen +
                        0.071 * scanLine[x].rgbtBlue;
      scanLine[x].rgbtGreen = red;
      scanLine[x].rgbtRed = red;
      scanLine[x].rgbtBlue = red;
    }
}}
Попробуйте убрать 2 коэффициента у зелёного и синего цветов.
2
 Аватар для Imm0rt@L
6 / 5 / 0
Регистрация: 09.06.2011
Сообщений: 25
25.06.2012, 16:03  [ТС]
не помогло
1
Now I Matrix
137 / 134 / 28
Регистрация: 01.03.2010
Сообщений: 223
25.06.2012, 16:25
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 Graphics::TBitmap *img = new Graphics::TBitmap;
 img->Width  = Image1->ClientWidth;
 img->Height = Image1->ClientHeight;
 img->Canvas->CopyRect(TRect(0,0,img->Width,img->Height),Image1->Canvas,TRect(0,0,img->Width,img->Height));
 img->PixelFormat = pf24bit;
 TRGBTriple *rgb = NULL;
 for(int y = 0; y<img->Height; ++y)
 {
  rgb = (TRGBTriple*)img->ScanLine[y];
  for(int x = 0; x<img->Width; ++x)
  {
   rgb[x].rgbtRed = 255;
  }
 }
 Image1->Canvas->CopyRect(TRect(0,0,img->Width,img->Height),img->Canvas,TRect(0,0,img->Width,img->Height));
 delete img; img = NULL;
 
 
/*Либо так, тоже прикольный результат:
   вставить вместо "rgb[x].rgbtRed = 255;"
*/
      const BYTE red = 0.550 * rgb[x].rgbtGreen + 0.071 * rgb[x].rgbtBlue;
      rgb[x].rgbtGreen = red;
      rgb[x].rgbtBlue = red;
Берёт картинку из Image1, переводит в красный цвет не тронув другие цвета, возвращает изменённую картинку обратно в Image1.
Извините если это не-то, что нужно, но для меня перевод картинки в красный цвет, сохранив яркость, это именно то, что приведено выше.
2
 Аватар для Imm0rt@L
6 / 5 / 0
Регистрация: 09.06.2011
Сообщений: 25
25.06.2012, 17:09  [ТС]
Все разобрался, спасибо большое за помощь!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.06.2012, 17:09
Помогаю со студенческими работами здесь

градации нарастания яркости светодиода
вот такой еще вопрос встал: надо определить градации нарастания тока = увеличения яркости светодиодов. мне сказали, что надо построить...

Преобразование изображения в градации серого
Нашел! Dim grayscale As New Imaging.ColorMatrix(New Single()() _ { _ New Single() {0.299, 0.299, 0.299,...

При нажатии на radiobutton3 цвет у label становится зеленым, если выбраны другие кнопки, цвет красный
При нажатии на radiobutton3 цвет у label становится зеленым, еси выбраны другие кнопки, цвет красный. если не выбрана ни какая Radiobutton...

Функция, которая каждую четную строку изображения переводит в градации серого цвета
Разработайте функцию, которая каждую четную строку изображения переводит в градации серого цвета

не печатает красный цвет
canon ip2700 не печатает красным


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru