3

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

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

2 ответа2

10

identify -verbose Imagemagick предоставляет таблицу гистограммы палитры, но только если количество уникальных цветов ниже предела (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

6

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

$ convert Waffle.jpg -scale 1x1\! -format '%[pixel:u]' info:-
rgb(219,166,94)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .