计算图像中特定颜色的像素数量?

时间:2015-01-30 07:47:13

标签: image

我想循环浏览图像文件夹并输出到控制台有多少像素是#333212,有多少是#332211等。这可能在PHP中吗?我找到了一个package 操纵图像,但没有一个可以检测每个像素颜色的图像。 PHP库中是否存在这样的工具或函数?

编辑:没有必须使用PHP,我安装的软件包越少越好。

1 个答案:

答案 0 :(得分:4)

您可以使用ImageMagick轻松完成此操作,就像这样。假设我们想要计算红色像素......

# First create a little test strip with black, white, red, green and blue parts
convert -size 50x50 xc:black xc:white xc:red xc:lime xc:blue +append out.png

enter image description here

现在将任何非红色转换为黑色,以便只剩下red像素

convert out.png -fill black +opaque red n.png

enter image description here

现在通过克隆生成的图片并使克隆完全变黑(通过将所有内容设置为零)来计算红色像素,并运行比较来计算有多少像素不是黑色

convert n.png                    \
    \( +clone -evaluate set 0 \) \
    -metric AE -compare          \
    -format "%[distortion]" info:
2500

2500对我来说看起来像50px乘50px: - )

注意

AE是绝对误差,即不同像素数的简单计数。 -format "%[distortion]" info:部分导致ImageMagick将计数(%distortion)输出为数字(info:)而不是图像。

显然,您将red替换为"#333212"以解决您的问题。

您也可以在一次访问中完成所有这些操作,例如:

convert input.png               \
   -fill black +opaque red      \
   \( +clone -evaluate set 0 \) \
   -metric AE -compare          \
   -format "%[distortion]" info: