pbj0812의 코딩 일기

[PYTHON] OpenCV 를 이용한 얼굴 비율 산출기 제작 본문

ComputerLanguage_Program/PYTHON

[PYTHON] OpenCV 를 이용한 얼굴 비율 산출기 제작

pbj0812 2021. 9. 10. 23:49

0. 목표

 - OpenCV 를 이용한 얼굴 비율 산출기 제작

1. 실습

 1) library 호출

# library 호출
import cv2
import numpy as np

 2) 이미지, cascade 불러오기

# 이미지
imgfile = 'C:/Users/user/jupyter_works/opencv_python/parasite/source/img.jpg'

# cascade 호출
cascade_file = "C:/Users/user/jupyter_works/opencv_python/xml/haarcascade_frontface.xml"

image = cv2.imread(imgfile)
cascade = cv2.CascadeClassifier(cascade_file)

 3) 얼굴 검출

# 얼굴 검출
face_list = cascade.detectMultiScale(image, scaleFactor=1.1, minNeighbors=1, minSize=(10, 10), maxSize = (1000, 1000))

 4) 전체 이미지 크기 확인

# 이미지 크기 확인
y1, x1, z1 = np.shape(image)

 5) 얼굴 면적 계산 및 결과 확인

if len(face_list) > 0:    
  color = (0, 0, 255)
  for face in face_list:
    x, y, w, h = face
    # 얼굴 면적 계산
    percent = round((w * h) / (x1 * y1) * 100, 0)
    # 면적에 따른 색 지정
    if percent >= 30:
        color = (0, 255, 0)
    else:
        color = (0, 0, 255)
    # 사각형
    cv2.rectangle(image,(x,y),(x+w,y+h),color,10)
    # 텍스트
    cv2.putText(image, str(percent) + '%', (x, y), cv2.FONT_HERSHEY_PLAIN, int(8), color, int(8), 1)
  # 저장
  cv2.imwrite("C:/Users/user/jupyter_works/opencv_python/parasite/source/result.jpg", image)

else:
  print("none")

2. 결과

 1) 연예인1(성함 모름)

 2) 아이유

Comments