Python 如何比较矩形并找到相似的矩形?

Python 如何比较矩形并找到相似的矩形?,python,list,numpy,Python,List,Numpy,我有密码 c = collections.Counter(l) print(c) 结果是几个矩形 ((x,y,w,h),列表中矩形的数量) 我想找到所有相似的矩形,并将它们合并为一个平均矩形 在相似条件下,我的意思是:x+-3%,y+-3%,w+-3%,h+-3% 例如,我们发现 第一组相似的矩形 ((1808, 1022, 21, 15), 19), ((1808, 1022, 21, 16), 14), ((1848, 1022, 21, 15), 13), ((184

我有密码

c = collections.Counter(l)
print(c)
结果是几个矩形

((x,y,w,h),列表中矩形的数量)

我想找到所有相似的矩形,并将它们合并为一个平均矩形

在相似条件下,我的意思是:x+-3%,y+-3%,w+-3%,h+-3%

例如,我们发现

第一组相似的矩形

((1808, 1022, 21, 15), 19),     
((1808, 1022, 21, 16), 14), 
((1848, 1022, 21, 15), 13),    
((1848, 1022, 21, 16), 11), 
((1808, 1021, 21, 16), 10), 
((1808, 1021, 21, 17), 4)
第二组呢

((1671, 1019, 42, 44), 18), 
((1671, 1017, 42, 46), 13),
计算平均值(x,y,w,h)和矩形的总数,这就是我想要的结果

 [
   ((1671, 1018, 42, 45), 31), 
   ((1825, 1022, 21, 16), 71)
 ]

这有点不明确。您试图解决问题的方法是什么?您遇到了哪些具体挑战?与3%以内的相似度通常不是一种等价关系(它不能传递),但您表述问题的方式似乎假设它是。你可以研究聚类算法,但不清楚“相似性”是什么意思。从数学上讲,两个矩形是相似的,当且仅当它们的长边与短边的比例相等时。这是仅在
h
w
上的一个条件,但您也提到了
x,y
。“那么,你到底在说什么?”约翰·科尔曼,对不起。在相似性条件下,我指的是“x+-3%和y+-3%和w+-3%和h+-3%”,我编辑了这个问题。我想要结果:[(1671018,42,45),31),((18251022,21,16),71)]
 [
   ((1671, 1018, 42, 45), 31), 
   ((1825, 1022, 21, 16), 71)
 ]