OpenCV

画像処理 「OpenCV 4」画像中の顔の目を検出して矩形で囲む

目の検出器(haarcascade_eye.xml)はLib/site-packages/cv2/data/にある。

サンプルコード

import cv2

# .xmlはLib/site-packages/cv2/data/にある
face_cascade = cv2.CascadeClassifier(
    'haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier(
    'haarcascade_eye.xml')

img = cv2.imread("Lenna.png")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

faces = face_cascade.detectMultiScale(gray)

for x, y, w, h in faces:
    # cv2.rectangle(img, (x, y), (x+w, y+h), (0, 0, 255), 1)

    face_color = img[y:y+h, x:x+w]
    face_gray = gray[y:y+h, x:x+w]
    eyes = eye_cascade.detectMultiScale(face_gray)

    for (ex, ey, ew, eh) in eyes:
        cv2.rectangle(face_color, (ex, ey), (ex+ew, ey+eh), (0, 255, 0), 1)

cv2.imshow("result", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

実行結果