[machineLearning] opencv로 얼굴 인식하기

2018. 6. 9. 14:02Python-이론/python-인공지능2

opencv로 얼굴 인식하기


haarcascade_frontalface_default.xml


이번에는 opencv를 설치하면 딸려오는 cascade파일을 사용하여 사진의 얼굴을 인실해보겠습니다. 

예제 코드

import cv2

cascadefile = "haarcascade_frontalface_default.xml"

img = cv2.imread('../images/arsenal.jpg')
imgray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

cascade = cv2.CascadeClassifier(cascadefile)
facelist = cascade.detectMultiScale(imgray,
                                    scaleFactor=2.08,
                                    minNeighbors=1)

print(facelist)
if len(facelist) >= 1:
    for face in facelist:
        x, y, w, h = face
        cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)


cv2.imshow('arsenal', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

결과 



코드 설명 

cascade = cv2.CascadeClassifier(cascadefile)

얼굴인식을 위한 cascadefile을 로드해서 객체를 만든다. 


facelist = cascade.detectMultiScale(imgray,
                                    scaleFactor=2.08,
                                    minNeighbors=1)

첫인자: 이미지데이터가 들어가며 보통 그레이색로 바뀐 이미지가 들어간다. 

scaleFactor: 각이미지의 스케일이 얼마나 줄어드는지 나타내는 것이다. 

ex) 1.03이면 원래 크기의 3%작아짐 

minNeighbors: 각각의 직사각형에 얼마나 많은 이웃들을 유지 해야하는 가를 나타낸다. 값이 크면 얼굴을 덜 찾는 대신 퀄리티가 높아집니다.