관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

컴퓨터 비전 11 - 얼굴 탐지(Face Detection) 4 : 얼굴에 블러 효과 적용하기 본문

인공지능/컴퓨터 비전

컴퓨터 비전 11 - 얼굴 탐지(Face Detection) 4 : 얼굴에 블러 효과 적용하기

huenuri 2024. 11. 14. 17:03

얼굴 탐지 실습이 아직 조금 더 남아있어 이 부분을 학습하고 다음 객체 탐지에 대해서 공부를 진행하려고 한다.


 

 

 

 

얼굴에 블러 효과 적용하는 실습 해보기

 

 

 

 

시작값과 끝값에서 슬라이싱을 하면 원하는 값을 가져올 수 있다.

 

 

 

 

슬라이싱으로 얼굴의 위치를 가져와서 잘랐다. 이제 얼굴들에 대한 블러 처리를 할 것이다.


 

 

 

블러 처리 효과 적용하기

 

 

 

 

마지막 얼굴이 잘 잘려서 가져왔다. 여기에 블러 처리를 해볼 것이다.


 

 

 

 

 

 

블러 처리하는 건 imshow에서 하나만 바꾸면 된다. 처음에는 img_crop을 하지 않고 이걸 썼다가 무슨 사진이 잘못 나온 줄 알았다. 이제 이 블러 처리한 것을 원본 사진에 덮어씌워 업데이트를 해줄 것이다.


 

 

 

 

 

 

신기하게 모든 얼굴들이 블러 처리가 되었다. 여기서 imshow를 img로 바꾸어주어야 전체 사진에서 블러 효과가 적용된다.


 

 

 

 

 

내 얼굴에 블러 효과 적용하기

이전에 바운딩 박스로 객체 탐지를 하는 코드를 그대로 가져와서 몇 가지만 삭제한다.

그리고 for 문으로 작성된 블러 처리 기능을 가져오는데, 실패할 경우에는 실패 메시지를 띄우고 종료하되 성공할 때는 이미지 블러 처리를 하는 코드이다. 객체를 추적하는 flip_frame으로 img 이름을 바꾸어준다.

 

원본 이미지를 잘라서 블러 처리한 후에 다시 원본 이미지에 덮어써야 블러 처리가 나타나기 때문이다.

 

 

 

하지만 카메라가 갑자기 멈추면서 이런 오류가 떴다. 오류 메시지에서 나타난 error: (-215:Assertion failed) !_src.empty() in function 'cv::GaussianBlur'는 cv2.GaussianBlur 함수가 빈 이미지를 입력으로 받았을 때 발생하는 에러이다. 이 문제는 얼굴 영역이 제대로 탐지되지 않았을 때, 즉 img_crop이 빈 이미지가 되는 경우에 발생한다.

이 오류를 방지하려면 img_crop이 빈 이미지가 아닌지 확인하고 빈 이미지일 경우 블러 처리를 생략하도록 할 수 있다.


 

 

 

코드 수정하기

 

 

 

 

탐지는 잘 되지만 q를 눌러도 화면이 꺼지지 않는다는 문제가 발생했다. 문제를 해결하기 위해 코드를 여러 번 수정했지만 잘 되지 않아서 그냥 넘어가기로 했다. 중요한 문제면 어떻게 서든 해결을 했을 텐데 지금은 빨리 컴퓨터 비전 공부를 마치는 게 더 중요하다.


 

 

 

학습을 마치고

이렇게 해서 얼굴 탐지 실습을 모두 진행했다. 1시간 반 동안 수업 내용을 여기 한 페이지에 담아보았다. 남은 2시간 반 동안은 욜로 모델을 가지고 객체 탐지를 하는 실습으로 진행된다.

블러 효과를 코드를 통해 작성하기 이전처럼 일일이 편집할 일도 없고 정말 좋은 것 같다.