【问题标题】:How to detect if a point is contained within a bounding rect - opecv & python如何检测一个点是否包含在边界矩形中-opencv和python
【发布时间】:2020-02-24 17:29:21
【问题描述】:

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

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

  1. 这四个数字是什么意思?

  2. 如何检查每个给定点是否包含在边界矩形内?

我知道 C++ 的 opencv 具有“包含”方法,但对于 python 不存在。

【问题讨论】:

    标签: python opencv bounding-box


    【解决方案1】:
    1. a,b 是矩形的左上角坐标,(c,d) 是它的宽度和高度。 OpenCV Contour Features
    2. 判断一个点(x0,y0)在矩形内,只检查a

    【讨论】:

    • 非常感谢!很有帮助!
    • @AlanKazbekov 问题被标记为 python 并且 python 绑定不支持 Rect 类
    • @Hooting 这实际上是不正确的,因为 OpenCV 矩形相对于左边缘和上边缘是包含的,所以代码应该是a <= x0 < a+c and b <= y0 < b + d。见docs.opencv.org/master/d2/d44/classcv_1_1Rect__.html#details
    【解决方案2】:
    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)
    

    【讨论】:

      猜你喜欢
      • 2012-06-13
      • 1970-01-01
      • 1970-01-01
      • 2020-07-11
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 2020-07-22
      • 1970-01-01
      相关资源
      最近更新 更多