我可以使用imagemagick检测边框颜色吗?
我必须处理很多图像,我正在寻找一种检测边界颜色的方法。例如,以下图为例:我可以使用imagemagick检测边框颜色吗?,imagemagick,Imagemagick,我必须处理很多图像,我正在寻找一种检测边界颜色的方法。例如,以下图为例: 是否有可能确定图像具有白色背景?一种解决方法是提取1px的边框,并检查提取的边框颜色是否同样为白色。但是我不认为ImageMagick的剃须功能支持这一点,对吗?有很多技术 您可以获得左上角(或其他)像素值,或者 所有4个角,取中间带,或 从每一侧各取一片1倍宽的切片,然后选择方差最小的一片 让我们制作一个测试图像200x100: convert xc:red xc:lime +append \( xc:blue x
是否有可能确定图像具有白色背景?一种解决方法是提取1px的边框,并检查提取的边框颜色是否同样为白色。但是我不认为ImageMagick的剃须功能支持这一点,对吗?有很多技术
- 您可以获得左上角(或其他)像素值,或者
- 所有4个角,取中间带,或
- 从每一侧各取一片1倍宽的切片,然后选择方差最小的一片
convert xc:red xc:lime +append \( xc:blue xc:white +append \) -append -scale 200x100\! image.png
以下是获取角点像素的一些方法:
# Top left pixel
magick image.png -format "%[hex:u.p{0,0}]\n" info:
FF0000
# Top right pixel
magick image.png -crop "1x1+%[fx:w-1]+0" -format "%[hex:u.p{0,0}]\n" info:
00FF00
# Bottom left pixel
magick image.png -crop "1x1+0+%[fx:h-1]+0" -format "%[hex:u.p{0,0}]\n" info:
0000FF
# Bottom right pixel
magick image.png -crop "1x1+%[fx:w-1]+%[fx:h-1]" -format "%[hex:u.p{0,0}]\n" info:
FFFFFF
现在让我们看一下顶部、底部、左侧和右侧边缘,我们可以使用更好的示例图像:
convert -size 256x256 gradient:red-yellow image.png
标准偏差为零,因此此行中的所有像素都相同
# Bottom row mean and standard deviation
magick image.png +repage -crop "x1\!+0+%[fx:h-1]" -format "%[fx:mean],%[fx:standard_deviation]\n" info:
0.666667,0
标准偏差为零,因此这一行中的所有像素都相同,但更亮(0.6666 vs 0.3333),因为红色和绿色像素都在变黄
# Left edge mean and standard deviation
magick image.png +repage -crop "1\!x+0+0" -format "%[fx:mean],%[fx:standard_deviation]\n" info:
0.5,0.0967909
由于颜色在变化,边缘有一些偏差
# Right edge mean and standard deviation
magick image.png +repage -crop "1\!x+%[fx:w-1]+0" -format "%[fx:mean],%[fx:standard_deviation]\n" info:
0.5,0.0967909
顺便说一句,如果你想比较平均值或标准偏差,shell在处理浮动方面相当差,所以你可能更喜欢转换成整数百分比<代码>[fx:int(平均值*100)]
# Right edge mean and standard deviation
magick image.png +repage -crop "1\!x+%[fx:w-1]+0" -format "%[fx:mean],%[fx:standard_deviation]\n" info:
0.5,0.0967909