Page 885 - 3-3
P. 885
return True
# 실제로 얼굴인식을 하게 되는 함수
def FaceDetection():
# 전역변수를 읽어옴
global sess,clf,softmax_tensor,label_lines
# 찾은 얼굴의 이름을 기본값으로 초기화
detection_name = 'NONE'
#webcam 크기 설정
video_width = 320
video_height = 240
#webcam 정보 읽어옴
cam = cv2.VideoCapture(0)
#webcam 크기 적용
cam.set(cv2.CAP_PROP_FRAME_WIDTH,video_width)
cam.set(cv2.CAP_PROP_FRAME_HEIGHT,video_height)
# 얼굴영역으로 검사할 영역 설정
Area = [0,0,320,240]
# 얼굴에 대한 x,y,w,h 정보 저장 배열
xy_arrs = []
while True:
#webcam 으로 부터 프레임을 읽어옴
ret,frame = cam.read()
# 읽을 프레임이 없을 경우 종료
if not ret:
break
# 프레임 좌우반전
frame = cv2.flip(frame,1)
# 얼굴을 찾았는지 확인 변수
find_face = False
# 얼굴에 대한 roi 를 저장하는 변수
crop_imgs = []
# 원본 이미지 따로 저장
ori_frame = frame.copy()
# 해당 프레임을 3 channel -> 1 channel 으로 컬러 변환
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
#1 channel 의 이미지에 대해서 최소 사이즈 30,30 으로 얼굴 영역 검색
faces = clf.detectMultiScale(gray, scaleFactor=1.1,
minNeighbors=5,minSize=(30,30),
flags=cv2.CASCADE_SCALE_IMAGE)
#find area in face
for (x,y,w,h) in faces:
# 찾은 얼굴 영역이 원하는 범위안에 있는지 탐색
if Area_in_Face(Area,(x,y,x+w,y+h)):
find_face = True
# 얼굴 발견 시 정보를 저장
- 885 -