使用GraphicsMagick进行颜色像素计数

时间:2016-02-23 13:30:11

标签: pixel graphicsmagick

我需要计算图像中不是背景颜色的像素。 我用PHP调用它(它来自ImageMagick):

gm convert test.png -fill black +opaque "rgb(255,255,255)" -fill white -opaque "rgb(255,255,255)" -print "pixels = %[fx:w*h*mean]\n"

但它没有给出任何结果,没有。 我尝试使用直方图代替:

gm convert test.png -define histogram:unique-colors=true -format %c histogram:info.txt

虽然有效,但是为每种颜色和更多细节提供值,我只需要一个数字。

1 个答案:

答案 0 :(得分:0)

这里有几个问题。你似乎试图将GraphicsMagick和ImageMagick混合在一起,当它们不是同一个东西时。

首先,GraphicsMagick没有ImageMagick拥有的+opaque运算符。

其次,它没有ImageMagick用于数学运算的-fx运算符。

我建议你转移到更强大的ImageMagick。然后它将按预期工作:

# Create a test image
convert -size 200x200 xc:black xc:white xc:red +append image.png

enter image description here

# Count the white pixels
convert image.png -fill black +opaque "rgb(255,255,255)" -print "pixels = %[fx:w*h*mean]\n" nul:
pixels = 40000

如果你真的,真的必须使用GraphicsMagick,我只能建议以下 - 这很大程度上基于@ GlennRanders-Pehrson回答here

gm convert image.png +matte -matte -transparent white -operator matte negate 1 result.png

gm identify -verbose result.png | grep -EA5 "Opacity:|Geometry:" | grep -E "Mean|Geometry"
  Geometry: 600x200
  Mean:                    43690.00 (0.6667)
  Mean:                    43690.00 (0.6667)

你的回答是:

600 * 200 * (1 - 0.667)