计算图像中有多少种具有特定颜色的像素?

Hel*_*Che 2 image imagemagick-convert

我想遍历图像文件夹并输出以控制台#333212有多少像素,#332211有多少像素,等等。在PHP中这可能吗?我找到了一个可以处理图像的程序包,但是不能检测每个像素的颜色的程序包。PHP库中是否存在这样的工具或功能?

编辑:不必在PHP中,我必须安装的软件包越少越好。

Mar*_*ell 5

像这样,您可以使用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
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

现在将任何非红色转换为黑色,以便仅red保留像素

convert out.png -fill black +opaque red n.png
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

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

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

2500对我来说就像50px x 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:
Run Code Online (Sandbox Code Playgroud)