如何检测一个点是否在边界矩形内 - OpenCV & Python

16

我有一组点[(x0,y0), (x1,y1), .. ]

还有一组使用cv2.boundingRect(someContour)函数生成的边界矩形,其中每个边界框都是一个可迭代对象,具有四个坐标(a,b,c,d)。 我的问题是:

  1. 这四个数字的含义是什么?

  2. 如何检查每个给定点是否包含在边界框中?

我知道C++的opencv有“contains”方法,但在Python中不存在。

2个回答

19
  1. a、b是矩形的左上角坐标,(c、d)是其宽度和高度。 OpenCV轮廓特征
  2. 要判断点(x0,y0)是否在矩形中,只需检查a < x0 < a+c和b < y0 < b + d

非常感谢!非常有帮助! - Nimrodshn
@AlanKazbekov 这个问题被标记为 python,而且 Python 绑定不支持 Rect 类。 - j b
@Hooting 这个实际上是不正确的,因为 OpenCV 矩形在左和上边缘方面是 包含 的,所以代码应该是 a <= x0 < a+c and b <= y0 < b + d。请参见 https://docs.opencv.org/master/d2/d44/classcv_1_1Rect__.html#details - j b

7
def rectContains(rect,pt):
    logic = rect[0] < pt[0] < rect[0]+rect[2] and rect[1] < pt[1] < rect[1]+rect[3]
    return logic

rect = (a,b,c,d)

rectContains(rect,pt)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接