본문 바로가기
Programming/AI

[머신러닝/딥러닝] opencv로 얼굴 인식하기

by 제타 2018. 7. 9.
반응형

openCV를 활용하여 얼굴을 인식 한 후 표시하는 코드이다.


opencv를 설치할 때 캐스케이드 파일이 자동으로 생성되는 줄 알았는데 안되서 그냥 강제로 넣어주었다.


OpenCV(3.4.1) Error: Assertion failed (!empty()) in detectMultiScale, file /io/opencv/modules/objdetect/src/cascadedetect.cpp, line 1698

Traceback (most recent call last):

  File "facedetect.py", line 18, in <module>

    minSize=(150,150))

cv2.error: OpenCV(3.4.1) /io/opencv/modules/objdetect/src/cascadedetect.cpp:1698: error: (-215) !empty() in function detectMultiScale


만약 다음과 같은 에러가 떨어진다면 강제로 캐스캐이드 파일을 소스코드를 실행하는 곳에 넣어주도록 하자. (파일로 첨부해놓음)


haarcascade_frontalface_alt.xml


예제 소스이다.


import cv2
import sys
# 이미지 파일
image_file = "./test.jpg"
# 캐스케이드 파일의 경로 지정
cascade_file = "./haarcascade_frontalface_alt.xml"
# 이미지 읽고
image = cv2.imread(image_file)
# 그레이스케일로 변환
image_gs = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 얼굴 인식 특징 파일 읽고
cascade = cv2.CascadeClassifier(cascade_file)
print(image_gs)
# 얼굴 인식 부분
face_list = cascade.detectMultiScale(image_gs,
scaleFactor=1.1,
minNeighbors=1,
minSize=(150,150))
if len(face_list) > 0:
# 인식한 부분 표시
print(face_list)
color = (0, 0, 255)
for face in face_list:
x,y,w,h = face
cv2.rectangle(image, (x,y), (x+w, y+h), color, thickness=8)
# 파일저장
cv2.imwrite("test-output.PNG", image)
else:
print("no face")


다음과 같은 이미지로 예제 코드를 실행했다.

출처 - 캘리포니아 공과대학


얼굴을 인식했다.


참고로 역시 얼굴을 인식하는 정확도는 그렇게 높지 않다. ㅠ_ㅠ

반응형