파이썬 얼굴인식 코드 - paisseon eolgul-insig kodeu

안녕하세요 ~

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

개발 준비물

1. Python

2. OpenCV

3. Sample Image

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

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

프로젝트 생성
파이썬 얼굴인식 코드 - paisseon eolgul-insig kodeu
새 프로젝트 생성

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

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

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

파이썬 얼굴인식 코드 - paisseon eolgul-insig kodeu
얼굴감지 소스
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')

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

테스트
파이썬 얼굴인식 코드 - paisseon eolgul-insig kodeu
테스트 결과

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


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

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

스틱코드

stickode.com

파이썬 얼굴인식 코드 - paisseon eolgul-insig kodeu

파이썬 얼굴 인식(Face Detection)하기 (feat. OpenCV)

#얼굴 인식하는 프로그램 만들어보기 

#파이썬으로 만들어보는 얼굴인식 예제 #opencv-python

#얼굴 검출

파이썬으로 간단하게 얼굴을 인식하는 프로그램을 만들어 볼꺼에요.

먼저, opencv-python을 설치할게요.

pip install opencv-python

설치가 완료되고 나면, 테스트에 사용할 그림파일이 필요하겠죠?

저는 테스트 파일로..... 이걸 사용할게요.

예쁜 아이들의 얼굴이 잘 검출될까요?

파이썬 얼굴인식 코드 - paisseon eolgul-insig kodeu

그리고 얼굴 검출에 사용될 학습데이터는 아래 링크에서 구할 수 있어요.

저는 가장 기본적인 haarcascade_frontalface_default.xml 파일을 사용해볼게요.

github.com/anaustinbeing/haar-cascade-files/blob/master/haarcascade_frontalface_default.xml

anaustinbeing/haar-cascade-files

A complete collection of Haar-Cascade files. Every Haar-Cascades here! - anaustinbeing/haar-cascade-files

github.com

파이썬 얼굴인식 코드 - paisseon eolgul-insig kodeu

준비가 다 되었으면, 시작해보도록 할게요!

아래와 같이 코딩을 한 후!

import cv2

face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
sample_image = cv2.imread('sample.jpg')
gray = cv2.cvtColor(sample_image, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray)

#검출한 얼굴에 사각형으로 표시
for (x, y, w, h) in faces:
    cv2.rectangle(sample_image, (x,y), (x+w, y+h), (255, 0, 0), 2)

cv2.imshow('sample', sample_image)
cv2.waitKey()

실행해보면,

와우! 예쁜 아이들의 얼굴이 잘 인식되면서, 파란색의 사각형으로 표시가 된 것을 볼 수가 있어요!

이걸 잘 활용하면, 실시간 카메라로 인식을 할 수도 있겠네요.

파이썬 얼굴인식 코드 - paisseon eolgul-insig kodeu

잘 연습하셔서 잘 활용해보시길 바랍니다!

이런 글은 어때요?

  • 파이썬 리스트 내 요소들의 평균 값을 구해보자 #파이썬 리스트 요소를 입력 값으로 받아보자!
  • 파이썬 특정 디렉토리 내 모든 파일 찾기 #파이썬 특정 디렉토리 내 원하는 파일 찾기 #os.listdir #endswith
  • 파이썬 웹 크롤링 헤더 값 추가 방법 #웹 크롤링이 안될 때
  • 파이썬 파일에서 특정 문자열이 사용된 개수 세어보기 #파일에서 문자열 개수 파악하는 함수