【问题标题】:Check list for similar coordinates bevor adding entry在添加条目之前检查类似坐标的列表
【发布时间】: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


【解决方案1】:

感谢 cmets。检查负范围(-w 和 -h)解决了这个问题。

改动部分:

 if x in range (xn-w, xn+w) :
        if y in range (yn-h, yn+h) :

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-09
    • 2020-11-17
    • 2012-03-22
    • 2021-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多