Могу ли я получить список различных цветных пикселей с помощью ImageMagick?

#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