【问题标题】:Count how many pixels with a specific color in an image?计算图像中有多少具有特定颜色的像素?
【发布时间】:2015-03-29 15:57:25
【问题描述】:

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

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

【问题讨论】:

  • 我记得安装它时遇到了麻烦,打算再试一次。它不一定是 php(检查我的编辑)。
  • 如果您使用的是某种 Unix 风格,您的计算机上可能已经安装了 ImageMagick

标签: image imagemagick-convert


【解决方案1】:

您可以使用 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

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

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

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

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

2500 在我看来是 50 x 50 像素 :-)

注意

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:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-13
    • 2014-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多