본문 바로가기
백엔드/Python

python CascadeClassifier를 이용한 얼굴영역 표시

by 작은소행성 2021. 1. 12.
import cv2
from matplotlib import pyplot as plt
import os
print(os.getcwd()) #현재 파일 위치

#둘중에 되는거 사용
#face_cascade = cv2.CascadeClassifier('../haarcascades/haarcascade_frontalface_default.xml')
#eye_casecade = cv2.CascadeClassifier('../haarcascades/haarcascade_eye.xml')

face_casecade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
eye_casecade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_eye.xml')


imgfile='D:/my/video frame/crop_v2/frame_v_1_117_11.jpg'

img = cv2.imread(imgfile)
gray = cv2.imread(imgfile, cv2.IMREAD_GRAYSCALE)
faces = face_casecade.detectMultiScale(gray, 1.3,5)

#얼굴영역 검출 안될 때
if len(faces) == 0:
    print('faces 0')
    print(plt.imshow(img))        

#얼굴영역 검출 될 때 이미지에 얼굴영역 표시하기
elif len(faces) == 1:
    for (x,y,w,h) in faces:    
        print(x,y,w,h)
        cv2.rectangle(img, (x,y), (x+w, y+h), (255,0,0),2)
        roi_gray = gray[y:y+h, x:x+w]
        roi_color = img[y:y+h, x:x+w]
        eyes = eye_casecade.detectMultiScale(roi_gray)
        for (ex, ey, ew, eh) in eyes:
            cv2.rectangle(roi_color, (ex,ey), (ex+ew, ey+eh),(0,255,0),2)

    print(plt.imshow(img))        
      

 

 

 

 

 

반응형