在添加条目之前检查相似坐标的列表
Check list for similar coordinates bevor adding entry
我正在使用 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 和 -h)解决了问题。
更改部分:
if x in range (xn-w, xn+w) :
if y in range (yn-h, yn+h) :
我正在使用 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 和 -h)解决了问题。
更改部分:
if x in range (xn-w, xn+w) :
if y in range (yn-h, yn+h) :