首页 > 解决方案 > 如果 x 或 y 大于/小于 N,则过滤 x,y 坐标

问题描述

我正在努力寻找合适的算法来过滤 x,y 坐标列表(来源:)cv2.matchTemplate

我的数据是这样的:[(552, 429), (553, 429), (457, 477), (458, 478), (1208, 671), (1209, 671), (467, 712), (468, 712)]

这些坐标对于绘制矩形以定位在图片中找到模板的位置很有用,但我需要“单击”这个模板,所以我只需要一个角度。我只想保留与所有其他点的距离大于或小于 N 的坐标。

在这张图片中,我只想保留红点坐标而不是蓝色矩形坐标。

在此处输入图像描述

标签: python

解决方案


我知道这是您需要的代码块。

N = 5
result = []
removed = []
for index, (x, y) in enumerate(data):
    if not (x, y) in result and not (x, y) in removed:
        removed += list(filter(lambda c: abs(c[0] - x) < N, data))
        result.append((x, y))
print(result)

推荐阅读