Imagemagick 如何识别完全形成的矩形?

Imagemagick 如何识别完全形成的矩形?,imagemagick,coordinates,Imagemagick,Coordinates,我在试着确定完全成形的电抗的坐标。我的意思是,它有4个边,白色的边界线构成了一个完整的盒子 这是我的输入图像。 在下图中,我用黄色显示了我想要获得坐标的矩形。 在此输入图像中,有3个带白色边框线的黑色矩形和1个全白色矩形 我当前的convert代码给出了所有区域的坐标,包括那些产生噪音的白色区域 convert input.png\ -定义连接的组件:verbose=true\ -定义连接的组件:面积阈值=100\ -连接组件8-自动调平:空| grep“255255” 7602:233x8

我在试着确定完全成形的电抗的坐标。我的意思是,它有4个边,白色的边界线构成了一个完整的盒子

这是我的输入图像。

在下图中,我用黄色显示了我想要获得坐标的矩形。

在此输入图像中,有3个带白色边框线的黑色矩形和1个全白色矩形

我当前的
convert
代码给出了所有区域的坐标,包括那些产生噪音的白色区域

convert input.png\
-定义连接的组件:verbose=true\
-定义连接的组件:面积阈值=100\
-连接组件8-自动调平:空| grep“255255”
7602:233x81+295+192 411.0232.0 18873 srgb(255255)
31:356x70+365+28542.4,57.24602 srgb(255255)
7604:538x510+45+273 163.1529.1 4394 srgb(255255)
7605:292x470+627+273809.5494.2216 srgb(255255)
1393:149x45+785+40860.8,60.52040SRGB(255255)
8449:513x125+70+658326.0708.6761 srgb(255255)
7015:43x27+291+110312.5122.1620 srgb(255255)
7599:84x43+676+148 717.5169.0 250 srgb(255255)

所以,我的问题是:有没有办法从
convert
命令给出的输出中识别哪些坐标属于完全形成的矩形?谢谢

我突然想到了几个主意。我还没有将它们开发成完整的解决方案,但如果时间允许,以后可能会这样做

  • 您可以选择列表中每个连接组件的中心作为泛光填充的种子点,例如黄色,然后将所有内容设置为非黄黑色(使用
    -fill black+不透明黄色
    ),然后再次运行连接组件,以查看是否在正确的区域获得填充形状。例如,选择第四个输出行:

    7604:538x510+45+273 163.1529.1 4394 srgb(255255)

从中心开始的洪水填充:

magick outlines.png -fill yellow -floodfill +314+478 black result.png

或者更进一步:

magick outlines.png -fill yellow -floodfill +314+478 black -fill black +opaque yellow result.png

然后运行另一个连接组件分析,查看是否检测到完全黄色填充的形状

  • 你可以运行一个命中或未命中的形态学,寻找并跟随它们返回并删除它们,以消除在矩形末端突出的“超调”线

顺便说一句,如果您专门寻找矩形,您可能最好检查4连接的组件,而不是像目前那样检查8连接的组件。

我想到了一些想法。我还没有将它们开发成完整的解决方案,但如果时间允许,以后可能会这样做

  • 您可以选择列表中每个连接组件的中心作为泛光填充的种子点,例如黄色,然后将所有内容设置为非黄黑色(使用
    -fill black+不透明黄色
    ),然后再次运行连接组件,以查看是否在正确的区域获得填充形状。例如,选择第四个输出行:

    7604:538x510+45+273 163.1529.1 4394 srgb(255255)

从中心开始的洪水填充:

magick outlines.png -fill yellow -floodfill +314+478 black result.png

或者更进一步:

magick outlines.png -fill yellow -floodfill +314+478 black -fill black +opaque yellow result.png

然后运行另一个连接组件分析,查看是否检测到完全黄色填充的形状

  • 你可以运行一个命中或未命中的形态学,寻找并跟随它们返回并删除它们,以消除在矩形末端突出的“超调”线

顺便说一句,如果您专门寻找矩形,您最好检查4连接的组件,而不是目前的8连接组件。

谢谢您的回答。我知道,从我得到的连接组件的第一个输出来看,我需要运行一个循环,并按照您的建议进行洪水填充,然后再次应用
连接组件
,并使用
检查条件是否只有一行包含黄色?我还有一个疑问,为什么在命令中使用
+314+478
?再次感谢。看看我提到的几何体组件
538x510+45+273
。它宽538像素,高510像素,左上角为+45+273。因此,它的x中心位于
45+538/2
,有望位于314。它的y轴中心在
273+510/2
上,应该是528,所以,是的,我的478有点浮动。非常感谢您的解释。我试图理解并应用你的逻辑,以便自动获得矩形的坐标。谢谢马克的回答。我知道,从我得到的连接组件的第一个输出来看,我需要运行一个循环,并按照您的建议进行洪水填充,然后再次应用
连接组件
,并使用
检查条件是否只有一行包含黄色?我还有一个疑问,为什么在命令中使用
+314+478
?再次感谢。看看我提到的几何体组件
538x510+45+273
。它宽538像素,高510像素,左上角为+45+273。因此,它的x中心位于
45+538/2
,有望位于314。它的y轴中心在
273+510/2
上,应该是528,所以,是的,我的478有点浮动。非常感谢您的解释。我试图理解并应用您的逻辑,以便自动获得矩形的坐标。