#imagemagick
Вопрос:
Допустим, у меня есть следующее изображение:
Когда я использую ImageMagick, команда identify -format %k image.png
подсчитывает количество различных цветов на этом изображении. Мой вывод для этого изображения 1031
, который означал бы, что это изображение имеет 1031 другой цвет. Тем не менее, визуально говоря, что у меня около 5 разных цветов:
black white grey light green dark green
Я хотел бы найти способ получить список количества основных цветных пикселей. Например, предположим, что на последнем изображении у меня 1000 пикселей, поэтому я ожидал бы чего-то вроде:
black:10 white:50 grey:200 light green:690 dark green:50
Есть ли способ заставить ImageMagick отображать выходные значения, подобные последним? Просто чтобы я знал процент основных цветов на моем изображении?
Ответ №1:
Вы можете загрузить изображение, сообщить ImageMagick, что хотите уменьшить его до 5 цветов, а затем получить гистограмму вот так:
magick 0N9iv.png -colors 5 -verbose info: | grep -A5 Histogram: Histogram: 459: (181.83,198.952,162.503,229.414) #B6C7A3E5 srgba(71.306%,78.0204%,63.7265%,0.899662) 26749: (182.035,228.807,158.076,254.874) #B6E59EFF srgba(71.3861%,89.7283%,61.9907%,0.999506) 577: (191.945,227.688,174.459,100.095) #C0E4AE64 srgba(75.2725%,89.2894%,68.4152%,0.392528) 727: (196.666,220.169,180.959,255) #C5DCB5FF srgba(77.124%,86.3407%,70.9642%,1) 4384: (219.415,217.829,213.189,255) #DBDAD5FF srgba(86.045%,85.423%,83.6034%,1)
Обратите внимание, что это означает, что ImageMagick сам выбирает цвета. Если вы специально хотите, чтобы ваше изображение отображалось в соответствии с вашим собственным набором цветов, создайте палитру этих цветов следующим образом:
magick xc:black xc:white xc:gray xc:lightgreen xc:darkgreen append palette.png
А затем скажите ImageMagick, чтобы он сопоставил все цвета с этими 5 цветами и увидел результат:
magick 0N9iv.png dither -remap palette.png -verbose info: | grep -A5 Histogram:
Пример вывода
Histogram: 81: (0,0,0,255) #000000FF black 22: (126,126,126,255) #7E7E7EFF gray 28270: (144,238,144,255) #90EE90FF LightGreen 4523: (255,255,255,255) #FFFFFFFF white Colormap entries: 5
Вы также можете выбрать только гистограмму, как это:
magick 0N9iv.png dither -remap palette.png -format %c histogram:info:-
Пример Вывода
81: (0,0,0,255) #000000FF black 22: (126,126,126,255) #7E7E7EFF gray 28270: (144,238,144,255) #90EE90FF LightGreen 4523: (255,255,255,255) #FFFFFFFF white