我需要计算图像中不是背景颜色的像素。 我用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
虽然有效,但是为每种颜色和更多细节提供值,我只需要一个数字。
答案 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
# 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)