Получение преобладающего цвета на изображении?

Можно ли получить преобладающий цвет на изображении из командной строки? В идеале я хотел бы вернуть его в виде шестнадцатеричного или RGB

Я подумал, что это можно сделать с помощью команды идентификации imagemagick, но я не видел возможности сделать это в документации.

2 ответа

Решение

Imagemagick-х identify -verbose предоставляет таблицу гистограмм палитры, но только если количество уникальных цветов ниже предела (1024 в проверенных версиях, v6.x до v6.8.3).

Вместо этого вы можете простоconvert"Ваше изображение гистограммой, этот вывод не ограничен количеством уникальных цветов:

convert image.jpg  -format %c -depth 8  histogram:info:histogram_image.txt
sort -n histogram_image.txt | tail -1

Сортировка выходных данных по первому столбцу сортировка по частоте цветов пикселей. (Частота определенных цветовых пикселей, конечно, может не соответствовать восприятию человеком преобладающего цвета.)

Если вы уменьшаете цвета, вы можете просто доверять convert сделать это для вас, выбрав дизеринг и / или постеризацию. Даже специально для веб-сейфа 216:

convert image.png  +dither -remap netscape:  image_websafe.png

Вы, вероятно, приблизитесь к воспринимаемому преобладающему цвету с помощью некоторого сочетания размытия, изменения размера и постеризации, это не простая задача для определения и решения:


Смотрите также следующую ссылку для dcolorsСценарий, использующий Imagemagick для определения набора преобладающих цветов в изображении, включает в себя координацию цветовой схемы вашего рабочего стола с выбранным изображением рабочего стола: http://javier.io/blog/en/2015/09/30/using-imagemagick-and-kmeans-to-find-dominant-colors-in-images.html

Я нашел этот элегантный и короткий ответ здесь http://blog.endpoint.com/2011/04/determining-dominant-image-color.html

$ convert Waffle.jpg -scale 1x1\! -format '%[pixel:u]' info:-
rgb(219,166,94)
Другие вопросы по тегам