본문 바로가기
Python

[Python] OpenCV를 활용하여 얼굴 인식하기

by teamnova 2021. 8. 14.
728x90

안녕하세요 ~

 

오늘은 파이썬과 OpenCV를 활용해서 얼굴을 인식 기능을 만들어 보겠습니다.

 

개발 준비물

1. Python

2. OpenCV

3. Sample Image

 

샘플 이미지 같은 경우는 얼굴을 인식하고 싶은 이미지를 사용하시면 됩니다.

참조 : 필자는 젯브레인사의 파이참이라는 개발 툴을 사용하였습니다.

 

 

프로젝트 생성

 

새 프로젝트 생성

 

- 새로운 프로젝트 생성을 하신 다음 프로젝트 명을 정해주시고 생성 버튼을 눌러줍니다.

 

 

OpenCV 추가 및 얼굴 인식 기능 구현

이제 OpenCV를 추가해주고 해당 로직을 구현해볼건데요 이 부분은 제가 미리 작성해둔 스틱코드를 이용하여 구현해 보도록 하겠습니다.

 

얼굴감지 소스

import cv2
# haarcascade 불러오기
# - 얼굴과 눈을 찾기위한 미리 학습된 샘플 데이터
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_eye.xml')

# 이미지 불러오기
# '샘플이미지경로': 얼굴을 검출하고싶은 이미지 경로를 작성해주세요
img = cv2.imread('샘플이미지경로')

# 이미지 전처리
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 얼굴 찾기
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x, y, w, h) in faces:
    cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)

    # 눈 찾기
    roi_color = img[y:y + h, x:x + w]
    roi_gray = gray[y:y + h, x:x + w]
    eyes = eye_cascade.detectMultiScale(roi_gray)
    for (ex, ey, ew, eh) in eyes:
        cv2.rectangle(roi_color, (ex, ey), (ex+ew, ey+eh), (0, 255, 0), 2)

# 결과 출력
cv2.imshow('image', img)

key = cv2.waitKey(0)
cv2.destroyAllWindows()

다음은 스틱코드를 사용하여 불러온 얼굴 감지 소스입니다.

 

 

import cv2

소스를 불러왔으면 import cv2 부분에 빨간 줄이 쳐져있을 거예요 opencv 모듈이 추가되지 않아서 인데요. Alt+Enter를 눌러서 Python OpenCV 모듈을 추가해줍니다.

 

 

# 이미지 불러오기
# '샘플이미지경로': 얼굴을 검출하고싶은 이미지 경로를 작성해주세요
img = cv2.imread('샘플이미지경로')

 

# 이미지 불러오기
img = cv2.imread('C:/Users/TFX5470H/Desktop/sample.jpg')

'샘플이미지 경로' 부분에 얼굴을 검출 시키고 싶은 이미지의 경로를 작성해주면 됩니다. 아래는 필자의 샘플 이미지 경로입니다.

 

 

테스트

테스트 결과

 

정상적으로 잘 동작하는 것을 확인할 수 있었습니다.

 


# 이 포스팅에서 사용한 스틱코드

https://stickode.com/detail.html?no=2327 

 

스틱코드

 

stickode.com