Средний цвет изображения
Ученые смогли определить средний цвет вселенной, но во сколько байтов мы можем найти средний цвет на изображении?
Твое задание
Ваш ввод будет одним изображением, которое вам нужно будет найти среднее значение цветов в изображении и вывести шестнадцатеричную строку цвета ( #??????
). Изображение может быть любого из следующих форматов
- JPEG / JFIF
- JPEG 2000
- TIFF
- GIF
- BMP
- PNG
- PNM
- PPM
Ввод также может быть принят в качестве URL / URI для изображения.
Встроенные функции, которые вычисляют средние значения или пробуют изображение сразу, например ImageMeasurements
, не допускаются.
Примеры
Результаты будут немного отличаться в зависимости от того, как вы рассчитываете среднее значение и какие цветовые модели вы используете. Я добавил значения RGB и LCH (HSV) для изображений ниже.
выход: #53715F
RGB, также может быть #3B7D3D
LCH (HSV)
выход: #8B7D41
RGB, #96753C
LCH (HSV)
источник
95.6...
который вы округлили95
в указанном выводе.Ответы:
Pyth -
2322191816 байтТранспонирует, чтобы получить все каналы, затем суммирует, делит и гексирует каждый. Завершает, объединяя и добавляя
#
.Принимает имя файла изображения (любого типа) из стандартного ввода и выводит в стандартный вывод. ОЧЕНЬ МЕДЛЕННО .
Пробный прогон
источник
PIL
библиотеку для обработки изображений. Посмотрите здесь для точного источника.Баш, 46 байт
ImageMagick масштабирует изображение до одного пикселя, который содержит среднее значение цветов в изображении, а затем выводит его в виде текста.
источник
MATLAB - 68 байт
Изображение читается в
imread
сочетании сuigetfile
открытием графического интерфейса пользователя, чтобы выбрать изображение, в которое вы хотите загрузить. Предполагается, что этот код состоит в том, что все изображения являются RGB, и для вычисления среднего цвета мы суммируем по каждому каналу индивидуально, а затем делим на столько элементов, сколько имеется в одном канале, то есть общее количество пикселей в изображении RGB ( ), деленное на 3. Поскольку среднее значение может генерировать значения с плавающей запятой, требуется обращение к округлению числа до нуля , в сочетании с шестнадцатеричным форматированием string ( ) используется для вывода каждого целого значения в среднем в его шестнадцатеричный эквивалент. Тем не менее, существует гарантия того, что дополнительный 0 дополняется влево, если среднее значение для любого канала меньше 16numel
(I)
fix
sprintf
%x
02
* .Пробные прогоны
Приятно то,
imread
что вы можете читать изображения непосредственно с URL. В качестве воспроизводимого примера, давайте предположим, что вы загрузили изображения на свой компьютер и запустили приведенный выше код ... но для демонстрации я прочитаю изображения непосредственно из Code Golf:Первое изображение
Второе изображение
* Примечание. Это совместная работа пользователей StackOverflow в чате MATLAB и Octave .
источник
CJam, 27 байт
Это читать изображение PPM из STDIN.
CJam не имеет встроенной обработки изображений, поэтому этот код ожидает ASCII Portable PixMap (магическое число P3) с полной 24-битной палитрой (максимальное значение 255) и без комментариев.
Тестовый забег
Как это устроено
источник
HTML5 + JavaScript (ES6), 335 байт
Это не победит, но мне все равно было весело.
Использует HTML5 Canvas API . Ввод - это URL-адрес изображения с поддержкой CORS .
демонстрация
Поскольку это ES6, в настоящее время он работает только в Firefox и Edge.
источник
new Image
наImage()
?TypeError: Constructor Image requires 'new'
W='width'
иH='height'
использоватьi[H]
илиi[W]
Python [3] + SciPy,
144133121Загружает данные пикселей, суммы для каждого канала, делит на размер *, форматы. Значения округлены до нуля.
* размер = ширина * высота * каналы, умноженные на 3
источник
input()
для принятия пути? Это сэкономит вам 20 байтов.import scipy
. Изменитьm.imread
наmisc.imread
.NameError: name 'misc' is not defined
. Пробовалfrom scipy import*
, тоже не работает.from scipy import sum, misc as m
? Тогда вы экономите, когда используете сумму.R, 90 байт
Путь к файлу PNG читается из STDIN. Пакет
png
должен быть установлен.Шаг за шагом:
источник
C 259 байт
Принимает файл PPM без комментариев .
Процесс
Исходный код:
Обрезать переменные и удалить цикл:
Оттуда я объединил различные утверждения в одно возвращаемое утверждение. Удалил его и любую другую информацию о посторонних типах, переименовал переменные и удалил пробелы.
источник
Кобра - 371
источник
Java,
449447446430426 байтБлагодаря этому ответ на переполнение стека для
String.format
хитрости.источник