擅长:python、mysql、java
<p>我不熟悉ImageMagick,所以我不能为您编写代码,但我解释了您要做的事情:</p>
<p>有一点我们可以肯定的是:<strong>每张牌的实际尺寸!您知道所有的牌都有相同的宽度和高度(在现实世界中)</strong>,所以您只需要在图像的第一个堆栈和第二个堆栈上找到上面一张牌的宽度。因为这两个数字是相互关联的,现在可以得到甲板1和甲板2周围尺寸的比率。在</p>
<p>有了这些比率,你可以规范化甲板的高度,并相互比较这些数字。在</p>
<p>例如,考虑每张卡的宽度(红色箭头)为5厘米,而图像中第一组的宽度为80像素,第二组为40像素。所以比率是2。现在要比较这些黑线,只需将第二行的长度乘以2,然后将结果数与第一行的长度进行比较。在</p>
<p><a href="https://i.stack.imgur.com/nl4nc.png" rel="noreferrer"><img src="https://i.stack.imgur.com/nl4nc.png" alt="enter image description here"/></a></p>
<p>你有很多方法来估计每副牌的宽度。提取宽度可能很困难,因此我建议比较图案的宽度(黄色箭头),为此,我将采用以下方法:</p>
<blockquote>
<p>1- Do a canny on image (because of the drawings on the card, you will
have lots of line on the surface of the card)</p>
<p>2- Do a dilation to stick all those lines of drawing on the surface of
the card and make a unit object</p>
<p>3- Do an erosion to shrink that object a little, and then catch the
width of that object (this would be a good estimation of the width of
the card)</p>
</blockquote>