Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
lixod96
1 / 1 / 0
Регистрация: 18.04.2014
Сообщений: 117
#1

Как из обычного изображения сделать негативное? - C++

18.11.2014, 16:21. Просмотров 923. Ответов 11
Метки нет (Все метки)

Я так понял изображение нужно разбить на пиксели и изменить их от 0 до 255.

Помогите с лабой???
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.11.2014, 16:21     Как из обычного изображения сделать негативное?
Посмотрите здесь:
Вращение изображения, как сделать? C++ Builder
Поиск управляющего символа, как обычного C++ Builder
Как переделать класс из обычного в абстрактный? C++
как сделать так, что-бы иконки (или изображения) при изменении размера формы не оставались за ее границей, а переходили на следующую строчку C++ Builder
Отрисовка изображения поверх канвы (изображения) и вращение изображения C++ Builder
Visual C++ Создание ОБЫЧНОГО окна!
C++ Перевод обычного приложения на службу
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
6281 / 5884 / 1904
Регистрация: 18.12.2011
Сообщений: 15,093
Завершенные тесты: 1
18.11.2014, 16:41     Как из обычного изображения сделать негативное? #2
В каждом пикселе для каждого цвета значение x меняете на 255-x
lixod96
1 / 1 / 0
Регистрация: 18.04.2014
Сообщений: 117
18.11.2014, 16:49  [ТС]     Как из обычного изображения сделать негативное? #3
Можна хотя бы наброски кода??
Первый раз с таким столкнулся
SmittWesson
120 / 169 / 17
Регистрация: 04.06.2014
Сообщений: 1,286
18.11.2014, 16:55     Как из обычного изображения сделать негативное? #4
Цитата Сообщение от zss Посмотреть сообщение
В каждом пикселе для каждого цвета значение x меняете на 255-x
... и получаете просто белый экран...
Для получения чёрно-белого изображения, нужно каждому пикселю, присвоить среднюю составляющую всех цветов по формуле - RGB = (R+G+B)/3. Для получения негатива нужно эту составляющую вычесть из 255. Т.е. - RGB = 255 - (R+G+B)/3
zss
Модератор
Эксперт С++
6281 / 5884 / 1904
Регистрация: 18.12.2011
Сообщений: 15,093
Завершенные тесты: 1
18.11.2014, 17:03     Как из обычного изображения сделать негативное? #5
Цитата Сообщение от SmittWesson Посмотреть сообщение
и получаете просто белый экран
С чего бы это?
Получим цветной негатив.
SmittWesson
120 / 169 / 17
Регистрация: 04.06.2014
Сообщений: 1,286
18.11.2014, 17:14     Как из обычного изображения сделать негативное? #6
Я позже заметил, что 255 - x. Пока редактировал и с интернетом боролся (глючит) время редактирования закончилось. А так, да. Будет цветной негатив.
lixod96
1 / 1 / 0
Регистрация: 18.04.2014
Сообщений: 117
18.11.2014, 17:29  [ТС]     Как из обычного изображения сделать негативное? #7
Программисты, помогите студенту)))
SmittWesson
120 / 169 / 17
Регистрация: 04.06.2014
Сообщений: 1,286
18.11.2014, 17:39     Как из обычного изображения сделать негативное? #8
C++
1
2
3
4
5
6
7
8
Grapic::TBitmap *bmp = Graphic::TBitmap;
for(int i=0; i < bmp->Widtch; i++)
  for(int j=0; j < bmp->Height; j++)
  {
    bmp->Color->R = 255 - bmp->Color->R;
    bmp->Color->G = 255 - bmp->Color->G;
    bmp->Color->B = 255 - bmp->Color->B;
  }
Может немного с Колор напутал, просто на память писал. Ну, с этим разберётесь, чтоб уж не совсем на халяву.
Байт
Эксперт C
15636 / 9978 / 1499
Регистрация: 24.12.2010
Сообщений: 18,742
19.11.2014, 17:56     Как из обычного изображения сделать негативное? #9
Меня временами мучает подобная проблема, потом отвлекают другие дела, и я о ней благополучно забываю. Вот, опять напомнили.
Проблема вот в чем. Пользователь выбирает цвета для текста и фона. Но поскольку он, вполне возможно, не является профессиональным колористом, он может выбрать цвета очень близкие и... просто не увидит текста на фоне. Хотелось бы ему помочь, т.е. заменить выбранный им цвет текста на такой, чтоб он уж точно был виден.
Так вот, способ, предложенный SmittWesson, не очень подходит для этой цели. Если исходный цвет был 127, 127, 127, то получится 126, 126, 126
SmittWesson
120 / 169 / 17
Регистрация: 04.06.2014
Сообщений: 1,286
20.11.2014, 09:29     Как из обычного изображения сделать негативное? #10
Цитата Сообщение от Байт Посмотреть сообщение
Пользователь выбирает цвета для текста и фона.
Совершенно верно. Тут нужет другой подход. Речь ведь идёт о негативном изображении. Цветном, не цветном, тут уж не важно.
Ваш вопрос о контрастности противоположных цветов. Интересно смотрится синий на красном из-за особенностей строения наших глаз. Но, читать такой текст практически невозможно. Синий текст, ка-бы становится трёхмерным и плавает перед глазами.
Чёрный на белом (общепринятое сочетание) тоже имеет недостатки. Лучшее сочетание - голубой на чёрном. Глаза меньше устают.
Байт
Эксперт C
15636 / 9978 / 1499
Регистрация: 24.12.2010
Сообщений: 18,742
20.11.2014, 10:43     Как из обычного изображения сделать негативное? #11
Цитата Сообщение от SmittWesson Посмотреть сообщение
Чёрный на белом (общепринятое сочетание) тоже имеет недостатки.
Лично я предпочитаю черный на сероватом.
Цитата Сообщение от SmittWesson Посмотреть сообщение
Лучшее сочетание - голубой на чёрном. Глаза меньше устают.
Для меня это - смерти подобно. Глаза тут же вылезают из орбит. Есть пара интересных форумов, где принято именно это сочетание. Так я туда просто боюсь заходить! Но это уже дело личного вкуса и физиологии. Именно поэтому я и стараюсь дать пользователю выбор. Но он может такого навыбирать!
Как я понимаю, какой-то теории подбора достаточно контрастного сочетания нет? Или мы ее не знаем.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2014, 15:21     Как из обычного изображения сделать негативное?
Еще ссылки по теме:
C++ Неестественное поведение обычного цикла
C++ Builder Чем _tmain отличается от обычного main ?
Помогите найти пример обычного блокнота C++
C++ WinAPI WM_PAINT - символы вместо обычного текста
C++ применинь указатель unique_ptr вместо обычного

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

Или воспользуйтесь поиском по форуму:
SmittWesson
120 / 169 / 17
Регистрация: 04.06.2014
Сообщений: 1,286
20.11.2014, 15:21     Как из обычного изображения сделать негативное? #12
Цитата Сообщение от Байт Посмотреть сообщение
Для меня это - смерти подобно.
Так вот видите, нет предпочтений. Средняя температура по-больнице = 36,6.
Yandex
Объявления
20.11.2014, 15:21     Как из обычного изображения сделать негативное?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru