전처리
이번 프로젝트는 얼굴 표정을 인식해 분석한 표정에 해당하는
젤리 이모티콘을 표시 및 기록, 일기를 쓰는 웹사이트 제작 ,mood tracker 기법을 사용하는
일기 작성 서비스이기 때문에 AIHub에서 제공하는 얼굴 표정 이미지 데이터를 사용하기로 했다.
그런데 생각보다 표정별 이미지가 카테고리별로 잘 정리되지 않은것 같아서 수작업으로 우선 사진 정리를 했다
예를들어 나는 무표정 카테고리를 맡았었는데 그 카테고리 사진 안에 웃,,으시는 분들이 계셔서 삭제해주었다
그 다음 사진을 코드로 사진을 분류해주었다
import cv2
import glob
# haarcascade 불러오기
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
images = glob.glob('images/*')
print("images =", end=""), print(images)
result_list = []
for i in images:
temp = i.replace("\\", "/")
result_list.append(temp)
print("result_list = ", end=""), print(result_list)
# for image in images:
# print(image)
# 이미지 불러오기
for image in result_list:
if "jpg" in image:
print("image = ", end=""), print(image)
ori_img = cv2.imread(image)
ori_img = cv2.resize(ori_img, dsize=(0, 0), fx=0.4, fy=0.4, interpolation=cv2.INTER_AREA)
gray = cv2.cvtColor(ori_img, cv2.COLOR_BGR2GRAY)
# 얼굴 찾기
# faces = face_cascade.detectMultiScale(gray, 1.5, minNeighbors=5, minSize=(20,20))
faces = face_cascade.detectMultiScale(gray, 1.2, minSize=(200, 200))
print("faces =", end=""), print(faces)
cnt = 0
# if len(faces) >= 4:
for (x, y, w, h) in faces:
# cv2.rectangle(img, (x,y,w,h), (255,0,255),2 )
# cv2.imshow('src', img)
img_x1 = x
img_x2 = x + w
img_y1 = y
img_y2 = y + h
img = ori_img[img_y1:img_y2, img_x1:img_x2]
image_file_name = image.split('.')
print("image_file_name =", end=""), print(image_file_name)
file_name = image_file_name[0]
extension = image_file_name[1]
file_name += str(cnt)
filename = 'images/face/' + file_name + '.' + extension
print("filename =", end=""), print(filename)
cv2.imwrite(filename, img)
cnt += 1
우선 사진을 분류했는데 얼굴을 빠르게 찾아준다는 점에서 좋았지만
얼굴이 아닌 것들을 얼굴로 인식해 분류해 주는것도 있어서 이 점은 수정해야 할것 같다
댓글