使用ImageMagick进行连通组件标记

3
1个回答

5
是的,现在使用ImageMagick 6.8.9-10及更高版本已经可以实现,详情请参见这里
因此,如果我们从这张图片开始: enter image description here 我们可以像这样为每个或获取标记、边界框、质心和其他统计信息:
convert input.png                                    \
    -colorspace gray -negate -threshold 10%          \
    -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: 600x600+0+0 296.9,299.6 260033 srgb(0,0,0)
  2: 467x345+70+211 350.1,398.1 53563 srgb(255,255,255)
  1: 422x105+56+81 266.5,133.0 34814 srgb(255,255,255)
  4: 105x90+112+310 164.0,354.5 9450 srgb(255,255,255)
  3: 178x73+393+246 481.5,282.0 2140 srgb(255,255,255)

在此输入图像描述

然后,您可以像这样绘制边框框:

convert output.png -fill none -stroke red \
  -draw "rectangle 70,211 537,556"        \
  -draw "rectangle 56,81 478,186"         \
  -draw "rectangle 112,310 217,400"       \
  -draw "rectangle 393,246 571,319"       \
  x.png

enter image description here


如何将这些矩形裁剪成不同的文件? - Sigur
1
@Sigur 如果你想把第二个blob单独存储到一个文件中,可以使用convert input.png -crop 467x345+70+211 blob2.png命令。 - Mark Setchell
将以下与编程有关的内容从英语翻译成中文。只返回翻译的文本:将其作为一个新问题,说明您的操作系统以及外部文件的外观等,并复制链接到新问题,并将其粘贴在这里,明天我会看一下。问题和答案都是免费的 :-) - Mark Setchell
是的。前两个数字是宽度和高度,所以如果你想让你的盒子宽高各增加10像素,就在前两个数字上分别加上10。后两个数字是从左上角的x和y偏移量,所以从这些数字中减去5。这将在先前的示例中给出 convert image.png -crop 477x355+65+206 blob2.png - Mark Setchell
1
或者你可以编写一个简单的bash脚本(除非你使用的是Windows),来提取裁剪几何图形并进行修改。 - Mark Setchell
显示剩余7条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接