Python3 OpenCV只检测一只眼睛

时间:2018-06-24 06:37:23

标签: python opencv

我对OpenCV还是很陌生,我做了一个小程序,可以从视频流中检测左眼,并在其周围画一个框。

它使用this haar级联来实现。

代码如下:

import cv2

videoCapture = cv2.VideoCapture(0)
cascade = cv2.CascadeClassifier("leftEye.xml") # from https://github.com/opencv/opencv/blob/master/data/haarcascades/haarcascade_lefteye_2splits.xml

streamWidth = int(videoCapture.get(cv2.CAP_PROP_FRAME_WIDTH))
streamHeight = int(videoCapture.get(cv2.CAP_PROP_FRAME_HEIGHT))

while True:
    _, normalFrame = videoCapture.read()
    normalFrameGrayOverlay = cv2.cvtColor(normalFrame, cv2.COLOR_BGR2GRAY)
    eyes = cascade.detectMultiScale(normalFrameGrayOverlay, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30), flags=cv2.CASCADE_SCALE_IMAGE)

    for (x, y, w, h) in eyes:
        cv2.rectangle(normalFrameGrayOverlay, (x, y), (x + w, y + h), (0, 0, 0), 2)
        print("X" + str(x) + "Y" + str(y))

    cv2.imshow("ArduinoFaceDetection", normalFrameGrayOverlay)
    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

videoCapture.release()
cv2.destroyAllWindows()

但是,当我开始播放视频流时,它会一次突出显示多只眼睛(有时会突出显示墙壁,但这只是我的恐怖相机)。我想知道是否有一种方法可以只瞄准一只眼睛(最好是左眼,因为haar级联状态),这样我就不会从print("X" + str(x) + "Y" + str(y))行中获得大量信息。

谢谢!

0 个答案:

没有答案