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

2024-09-26 17:50:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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。谁能给我提个好办法吗。请帮忙。谢谢


Tags: 代码ifiscv2frame人脸face边界
2条回答

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

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

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

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

相关问题 更多 >

    热门问题