如何检查 cv2.circle 是否位于 opencv python 中的 cv2.rectangle 内

How to check if cv2.circle lies inside cv2.rectangle in opencv python

我有一个正在检测面部的 opencv 应用程序。我在框架上绘制了一个 circle ,我需要检查圆圈是否位于面部的边界框内。下面是绘制圆的代码

1
cv2.circle(frame, (293, 141), 5, (0, 255, 0), -1)

表示 x 为 293,y 为 141 表示圆。下面是人脸检测的代码:

1
2
3
4
face_bbox = face.detect_face(frame)
    if face_bbox is not None:
        (f_startX, f_startY, f_endX, f_endY) = face_bbox.astype("int")
        cv2.rectangle(frame, (f_startX, f_startY), (f_endX, f_endY), (0, 0, 0), 2)

f_startX, f_startY, f_endX, f_endY 是为面部绘制的矩形的坐标。现在我需要检查圆圈是否位于边界框之间。为此,我提出了以下条件:

1
2
3
4
if f_startX < 293 < f_endX and f_startY > 141 > f_endY:
   print("Circle is inside face")
else:
  print("Circle is outside face")

但这似乎不起作用。对于如何将面部的 x 和 y 与圆的 x 和 y 进行比较,我也有点困惑。任何人都可以请给我一个好方法。请帮忙。谢谢


我得到了它,这是我使用的条件:

1
2
3
4
if f_startX < 293 < f_endX and f_startY < 141 < f_endY:
    print("Circle is inside face")
else:
    print("Circle is outside face")


我提出了一个非常通用的解决方案。
相应地替换变量。

1
2
3
4
5
6
7
8
9
10
11
#circle center
center_x = some_value
center_y = some_value
radius = some_value
(f_startX, f_startY, f_endX, f_endY) = face_bbox.astype("int")

if (center_x + radius < f_endX) and (center_y + radius < f_endY) and\\
(center_x - radius > f_startX) and (center_y - radius >  f_startY):
     print("Inside")
else:
     print("Outside")