Cascade classifier를 통해 얼굴을 인식하여 블러 효과(모자이크), Mask, Edge Filter 등을 Tkinter module을 통해 사용자가 조작하여 원하는 효과를 적용할 수 있다.
path 변수를 통해 각각의 이미지를 저장할 경로를 생성해줍니다.(blur, edge, mask)face_detector 변수를 통해 cascade classifier로 얼굴 인식을 할 수 있도록 설정해주었습니다.
Cascade를 통하여 받은 얼굴 좌표(x,y,w,h)를 통해 subface에 저장하여 해당 좌표에 블러처리를 하여 이미지에 적용해 줍니다. 코드 첫 줄에 얼굴 부분의 영역만 gray scale로 바꿔주는데, threshold를 이요해 줄 것이어서 gray scale로 바꿔주었습니다.
그 후 적용할 마스크를 resize해주고 threshold를 통해 특정 값을 0과 1로 바꿔준다. 이렇게 해주는 이유는 bitwise연산을 통하여 얼굴에 바로 적용할 수 있도록 하기 위함입니다.
그렇게 바꾼 마스크 이미지를 bitwise연산을 통해 얼굴에 씌워주고 해당 이미지를 return해주는 코드입니다.
예외 처리를 해 준 이유는 Mask가 화면 밖으로 나갔을 경우 범위 오류가 생성되면서 프로그램이 종료하는 문제를 겪었습니다. 해당 문제를 해결하기 위해 예외처리로 간단히 해결했습니다.
각각 Mask(i_ga), Blur(i_blur), Edge(i_edge), Original(i_original)의 전역 변수를 생성해 주었습니다. 이미지에 numbering을 해줄 변수 입니다.
그 후 맨 처음에 설정한 경로에 저장해주는 코드입니다.
코드를 한 번 실행하고 Image를 저장했을 때 종료 후 다음에 실행시 이미 파일이 있어서 error가 생성되며 종료되는 버그가 있었습니다. 따라서 에외 처리를 통하여(덮어쓰기) 형식으로 오류를 해결하였습니다.