【发布时间】:2021-10-13 21:05:54
【问题描述】:
我正在使用 OpenCV 进行模板匹配。 匹配本身产生了所有模板,但是在找到所有模板之前,会在多个细微的变化中找到最佳拟合。 模板应在选中的图像上出现 12 次。但是,x 位置 xloc 和 y 位置 yloc 的数组长度为 34。
locations = []
for (x,y) in zip (xloc,yloc) :
same = False
for (xn,yn) in locations :
if x in range (xn, xn+w) : #w being the width of the template, around 40px
if y in range (yn, yn+h) : # being the height
same = True
if not same :
locations.append ([int(x), int(y)])
如您所见,我尝试为这些位置编写一个新列表,只添加与列表中存在的值不太相似的值。这将条目数减少到 15 个,但仍有 3 个重复项。 我在屏幕截图中突出显示了重复的值。我想知道他们是如何设法通过的,即使它们应该在定义的范围内。 对这个项目来说重要的是比赛的地点和数量。谁能解释一下如何摆脱剩下的 3 个重复项?
【问题讨论】:
-
你检查了
+w,但是-w呢?在你的例子中,2个第一个开明的应该是一样的吧?但是没有检测到,因为x2 -
您不应该同时检查 x 是否在范围 (xn-w, xn+w) 和 y 范围内吗?
-
好的,谢谢。就是这样。我将范围扩大到也考虑了 -w 和 -h (xn-w, xn+w),现在它可以工作了。
标签: python opencv duplicates template-matching