获取图像中的主色?

获取图像中的主色?

是否可以通过命令行获取图像中的主色?理想情况下,我希望将其返回为十六进制或 RGB。

我认为可以用imagemagick 的识别命令,但我在文档中没有看到执行此操作的选项。

答案1

Imagemagickidentify -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

答案2

我在这里找到了这个优雅而简短的答案http://blog.endpoint.com/2011/04/determining-dominant-image-color.html

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

相关内容