ImageMagick 计算图像左右边缘有多少相同或几乎相同的颜色像素

ImageMagick count how many identical or almost identical color pixels are on the edges left and right of image

这是 PNG 图片示例:

它是 50x40,但在此处放大以便看得更清楚。

左下和右下像素的十六进制为F9E4B7

我需要知道从左下角到右下角的垂直边缘有多少像素具有几乎这种颜色,例如 1% 的模糊度,因为它们并不完全 F9E4B7 但有些略有不同。

在这种情况下,每边都是 20px:

我会标记需要计算的区域,以使其非常清楚:

我还需要能够计算出确切的像素数 F9E4B7,在本例中为 15 左和 20 右,我将标记略有不同的区域以便清楚计数器的位置需要停止:

在 Imagemagick 中执行此操作的方法是使用模糊将所有接近该颜色的像素更改为白色,其余为黑色。裁剪第一列或最后一列并使用 -fx 从均值*宽度*高度获取计数。因此,例如对于整个图像的左侧整列,一个有

Unix Imagemagick 6 语法:

convert tan.png -alpha off \
-fuzz 1% -fill white -opaque "#F9E4B7" -fill black +opaque white \
-gravity west -crop 1x+0+0 -format "%[fx:round(mean*w*h)]\n" info:

Windows Imagemagick 语法:

convert tan.png -alpha off ^
-fuzz 1% -fill white -opaque "#F9E4B7" -fill black +opaque white ^
-gravity west -crop 1x+0+0 -format "%[fx:round(mean*w*h)]\n" info:

结果:

108

要获得右侧,请使用 -gravity east。

要精确计数,请使用 -fuzz 0

对于 Imagemagick 7,将 convert 更改为 magick