- 22, Oct 2024
- #1
Напишите программу, которая принимает стандартный настоящий цвет изображение и один 24-битный RGB цвет (три цифры от 0 до 255). Измените входное изображение (или выведите новое изображение с теми же размерами) так, чтобы его средний цвет это именно тот цвет, который был введен. Для достижения этой цели вы можете изменить пиксели входного изображения любым удобным для вас способом. но цель состоит в том, чтобы сделать изменения цвета максимально незаметными визуально..
средний цвет изображения RGB на самом деле представляет собой набор из трех арифметические средства, по одному на каждый цветовой канал. Среднее значение красного — это сумма значений красного для всех пикселей изображения, деленная на общее количество пикселей (площадь изображения), округленная до ближайшего целого числа. Зеленые и синие средние значения рассчитываются таким же образом.
Этот Питон 2 (с ПИЛ) скрипт может вычислять средний цвет большинства форматов файлов изображений:
from PIL import Image
print 'Enter image file'
im = Image.open(raw_input()).convert('RGB')
pixels = im.load()
avg = [0, 0, 0]
for x in range(im.size[0]):
for y in range(im.size[1]):
for i in range(3):
avg[i] += pixels[x, y][i]
print 'The average color is', tuple(c // (im.size[0] * im.size[1]) for c in avg)
(Есть аналогичные средние цветовые программы здесь, но они не обязательно выполняют одинаковые вычисления.)
Основным требованием к вашей программе является то, что для любой входное изображение, средний цвет соответствующего выходного изображения должен точно соответствовать введенному цвету - согласно фрагменту Python или некоторому эквивалентному коду. Выходное изображение также должно иметь те же размеры, что и входное изображение.
Таким образом, технически вы могли бы представить программу, которая просто окрашивает весь ввод в указанный средний цвет (потому что среднее значение всегда будет этим цветом), но это конкурс популярности - победителем станет работа, набравшая наибольшее количество голосов., и такая тривиальная заявка не принесет вам много голосов. Новые идеи, такие как использование особенностей человеческого зрения или уменьшение изображения и рисование вокруг него цветной рамки (надеюсь), принесут вам голоса.
Обратите внимание, что определенные комбинации средних цветов и изображений требуют чрезвычайно заметных изменений цвета. Например, если средний цвет для сопоставления был черным (0, 0, 0), любой входное изображение необходимо будет сделать полностью черным, потому что, если бы какие-либо пиксели имели ненулевые значения, они также сделали бы среднее значение ненулевым (за исключением ошибок округления). Помните об этих ограничениях при голосовании.
Тестовые изображения
Некоторые изображения и их средние цвета по умолчанию, с которыми можно поиграть. Нажмите, чтобы увидеть полные размеры.
А. средний (127, 127, 127)
От фейжежоко's Изображения со всеми цветами отвечать. Найденный оригинальный на его блог.
Б. средний (62, 71, 73)
Иокогама. Предоставлено Геобиты.
С. средний (115, 112, 111)
Д. средний (154, 151, 154)
Эшера Водопад. Оригинал.
Э. средний (105, 103, 102)
Гора Шаста. Предоставлено мной.
Ф. средний (75, 91, 110)
Примечания
- Точные форматы ввода и вывода, а также типы файлов изображений, которые использует ваша программа, не имеют большого значения. Просто убедитесь, что вам понятно, как использовать вашу программу.
- Вероятно, хорошей идеей (но не техническим требованием) является то, что если изображение уже имеет целевой средний цвет, его следует выводить как есть.
- Пожалуйста, опубликуйте тестовые изображения со средним значением цвета (150, 100, 100) или (75, 91, 110), чтобы избиратели могли видеть одни и те же входные данные в разных решениях. (Публикация большего количества примеров — это нормально, даже приветствуется.)
#конкурс популярности #графический вывод #обработка изображений