我需要留下图像中最大的物体

I need to leave the biggest object in image

我需要使用 ImageMagick 从图像中检测最大的对象。它可以更大或更小,也可以在其他位置。它总是黑色的,背景总是白色的。

与连通分量分析类似

convert objects.png -define connected-components:verbose=true      \
   -define connected-components:area-threshold=100                 \
   -connected-components 8 -auto-level output.png

Objects (id: bounding-box centroid area mean-color):
  0: 595x842+0+0 296.7,420.0 499414 gray(255)
  7: 37x30+342+632 360.0,646.5 1110 gray(0)
  3: 12x15+465+375 470.5,382.0 180 gray(0)
  1: 23x12+439+332 447.9,335.4 150 gray(0)
  6: 13x16+451+425 456.6,430.6 136 gray(0)

列出的第一个对象(第一行)是一个白色对象,因为 mean-color 是灰色 (255),因此是背景,所以我忽略它。第二个是最大的(面积=1110),我可以像这样在它周围画一个红色矩形

convert objects.png -stroke red -strokewidth 5 -fill none -draw "rectangle 342,632 379,662" out.png

如果你想屏蔽掉最大物体边界框外的所有物体,你可以这样做:

convert objects.png -alpha on            \
   \( +clone                             \
      -evaluate set 0                    \
      -fill white                        \
      -draw "rectangle 342,632 379,662"  \
      -alpha off                         \
   \) -compose copy-opacity -composite result.png

基本上括号里面的部分是复制原图(+clone),填充黑色(-evaluate set 0),然后在最大形状的bounding box上画一个白框,然后使用那个黑白蒙版来设置我们开始使用的原始图像的不透明度。剩下的就是: