【发布时间】:2020-09-25 20:03:39
【问题描述】:
数组x表示一个边界框,由两个(x,y)坐标分隔:
x = np.array([[2, 1], [5, 3]])
而数组p通过它们的(x,y)坐标表示点的集合:
p = np.array([[3, 2], [6, 4], [3, 4], [4, 2]])
对于p中的每个点,我想(在一次操作中)确定它是否在边界框x中,从而得到以下结果。
result = np.array([1, 0, 0, 1])
我虽然知道np.where(),但不确定如何在一次操作中处理整个点集合。另外,纯数值方法不是更快吗?
编辑:
我也对存在多个边界框的情况感兴趣,例如:
# [[bbox_1], [bbox_2], [bbox_2]]
# with each bbox as [x1 y1 x2 y2]
x = np.array([[2, 1, 5, 3], [2, 2, 4, 6], [0, 4, 3, 2]])
结果是表单
# [p1_bbox_1, p2_bbox_1, p3_bbox_1, p4_bbox_1], [p1_bbox_2, p2_bbox_2 ...]]
# results not necessarily exact but shape is correct
result = np.array([[True, False, False, True], [True, False, False, False], [False, False, True, False]])
应将恰好位于 bbox 边界上的点视为内部。
【问题讨论】:
-
又被质疑了。来自
p[2]和p[3]的[3, 4]和[4, 2]呢?他们不是在第二个盒子里吗?这是result的第二行。 -
除了第一个边界框之外的值都是错误的——我只是做了这些例子,让我看看你是否希望我给出正确的值
标签: python numpy vector coordinates bounding-box