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



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

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

这意味着对于圆x是293,y是141。以下是人脸检测的代码:

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是为面绘制的矩形的坐标。现在我需要检查圆是否位于边界框之间。为此,我提出了以下条件:

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进行比较,我也有点困惑。谁能给我一个好办法吗。请帮忙。感谢

我让它工作了,这是我使用的条件:

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

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

#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")

最新更新