그린 스크린을 설치하는 것도 어렵기 때문에 얼굴만 잘라 배경 이미지에 겹쳐 보았다.

웹캠에서 자신의 얼굴을 감지하고 얼굴만 배경 이미지에 겹쳐 보았습니다. 웹 회의 앱에 웹캠으로 영상을 전달하면 손쉽게 웹 회의에 얼굴을 낼 수 있습니다.

어렸을 때 되고 싶었던(?) 나무의 현자가 될 수 있습니다.

주) 매복 추가 기능은 없습니다. 눈복장은 이 기사를 위해 스쿠쇼에 나중에 수 가공으로 추가했습니다.

도전



3월 초순부터 재택에서 Web회의 잔잔한 날이 되고 있습니다.
너무 방이 더러워서 비디오는 없고, 음성과 화면 공유만으로 어떻게든 왔습니다. 하지만 역시 웹 회의만으로는 지금까지의 신뢰 저축을 붕괴하고 있다고 생각합니다. 가끔 얼굴을 비추는 사람이 있으면 매우 기쁘게 생각하는 자신이 있습니다. 자신도 얼굴을 내밀고 싶다. 하지만 방이 좁고 너무 지저분하다!

보통은 포기하고 방을 정리하고 청소하거나 그린 스크린을 설치하여 크로마 키 합성으로 비디오로 할 것입니다. 하지만 역시 정리할 수 없다. . .

회사에서 널리 사용되는 웹 회의 시스템은 WebEx입니다. Zoom처럼 배경 변환 기능은 없고, Teams처럼 곧 개발해 줄 생각이 없다. . . Zoom도 가끔 사용하고 있지만, 머신 파워가 부족해서 그린 스크린 필수. 하지만 그린 스크린을 설치할 곳도 없다. . .

망상



그러고 보니 Zoom은 얼굴만이 아니라 손과 상체를 배경에서 잘라내고 있다. 그래서 무거운 처리가 필요한가? ?
얼굴 검출만으로 나누면 비력한 PC에서도 그렇게 부하 없이 할 수 있을 것! ?

구상



이런 느낌.

웹캠 --> OpenCV에서 얼굴 영역 검출 --> 얼굴 영역 만 꺼내 배경 이미지에 중첩 --> 웹캠 영상으로 출력 --> WebEx 및 Zoom에서 사용

이 블로그 기사 를 보면 역시 OpenCV에서 Face detection은 곧 할 수 있을 것 같다.
잘라내거나 겹치는 것은 Python Imaging Library (Pillow)에서 한 적이있다.
1초간에 5회 정도 처리할 수 있으면, Web 회의에서 사용하기에는 충분한 영상이 될 것.
그런데, 만든 화상을 Web 카메라의 영상으로서 출력하는 것은 어떻게 하면 좋을까? OpenCV에 그런 기능은 없을 것 같다. Python에서도 Mac이나 Windows에서 사용할 수 있는 라이브러리를 찾을 수 없습니다.

별로 스마트하지는 않지만, MacOS라면 ​​CamTwist로 화면의 일부를 캡처해 다른 소프트에 Web 카메라로서 인식시켜 건네줄 수 있는 것 같다.

해봤어



코드를 GitHub으로 올렸습니다.
자신이 쓴 부분은 Python이지만 OpenCV와 Qt를 이용하고 있습니다.
GW중이므로 아직 실전 투입하고 있지 않습니다. 빨리 다음 웹 회의가 되지 않을까.

좋은 웹페이지 즐겨찾기