0

我正在开展一个项目,该项目可以检测相机视线中的人的眼睛。我已经使用 face_cascade 和 eye_cascade 来确定它。它适用于可调阈值。但是,如果由于某种原因一段时间后无法检测到整个面部,则眼睛检测将停止。例如,如果曾经检测到眼睛,但现在该人戴着头盔,虽然眼睛仍然可见,但如果不先检测到面部,就很难检测到眼睛。

您能否帮助并指导我了解程序如何通过在较早检测到眼睛后在那里设置 ROI 来自动搜索眼睛?

如果这不可能,那么如何手动选择 ROI 以便程序仅查找那些特定区域?

提前致谢

代码参考:

def main():
cap = cv2.VideoCapture(0)
time.sleep(1.000)
cv2.namedWindow('image')
cv2.createTrackbar('threshold', 'image', 0, 255, nothing)
while True:
    _, frame = cap.read()
    face_frame = detect_faces(frame, face_cascade)
    if face_frame is not None:
        eyes = detect_eyes(face_frame, eye_cascade)
        for eye in eyes:
            if eye is not None:
                threshold = cv2.getTrackbarPos('threshold', 'image')
                eye = cut_eyebrows(eye)
                keypoints = blob_process(eye, threshold, detector)
                eye = cv2.drawKeypoints(eye, keypoints, eye, (0, 0, 255), cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
    cv2.imshow('image', frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()
4

0 回答 0