如何用ImageMagick统计图片主要颜色的像素数量及占比
可以通过ImageMagick实现你的需求。你统计到1031种颜色是因为图片存在抗锯齿过渡色、压缩产生的杂色,只需要先对图片做颜色量化,将颜色收敛到你肉眼识别的5种主色,再统计各颜色的像素数即可。
你使用的示例图片如下:
操作命令
如果你用的是ImageMagick 7及以上版本,直接执行如下命令:
magick 0N9iv.png -colors 5 -define histogram:unique-colors=true -format "%c" histogram:info:
如果是ImageMagick 6及更早版本,把magick替换为convert即可。
命令参数说明:
-colors 5:将图片颜色量化为5种,你可以根据实际观察到的主色数量调整这个数值histogram:info::指定输出直方图信息,返回结果会包含每种颜色的像素计数、对应色值,你可以直接和肉眼识别的黑、白、灰、浅绿、深绿做对应
格式化输出为你需要的「颜色:数量」格式
可以搭配awk对结果做简单处理,直接输出符合你预期的格式:
magick 0N9iv.png -colors 5 -define histogram:unique-colors=true -format "%c" histogram:info: | awk '{sub(/:/,"",$1); print $3":"$1}'
如果不需要做颜色量化,直接统计所有颜色的像素计数,去掉命令里的-colors 5参数即可,不过你当前的图片杂色较多,输出的列表会很长,更推荐先做颜色量化再统计。
内容的提问来源于stack exchange,提问作者raylight
相关产品推荐
相关产品推荐

