BlurScreen for Mac 화면공유용 스크린 블러 앱

맥북 화면 공유를 하다가, 화면의 특정 영역을 블러처리할 수 있다면 좋겠다는 아이디어에서 시작했다.

처음 시작은 가장 잘 다루는 Python으로 간단하게 작동하는 프로그램을 작성했다.

대략적으로 Pillow를 이용해 이미지를 캡쳐 -> OpenCV를 통해서 이미지 인식 후 Text Detection 후 해당 영역 Gaussian Blur처리.

다만 이렇게 만들었더니, 작동은 잘하는데, 너무 느렸다.

텍스트 인식을 안해도 5프레임, 텍스트 인식을 하면 FPS: 0.3303533067079781.. 0.3 프레임정도 나왔다.

현재 사용중인 모니터 해상도가 2560 * 1440 이라서 opencv에서 텍스트 인식을 위해서 사용했던 east 모델로 인식하는데 속도 문제가 있었다. 작은 프레임에서는 더 잘 작동하는데, 모델을 직접 학습시키기도 뭐하고 해서, 일단은 기존 모델을 활용하는 쪽으로 생각을 했다.

해서 이미지를 찍은후 병렬처리로 이미지를 쪼개어서 작업을 해볼까 했는데, 그렇게 하더라도 속도가 안나올 것 같다는 생각이 들었다.

결국 성능을 위해서는 최대한 시스템 라이브러리들을 활용해야 겠다는 생각이 들었고, 그렇게 pyobjc. cococa 패키지를 이용해서 CoreImage를 이용해서 스크린 캡쳐를 가져오는 지경이 되었다. 거의 Python으로 Mac용 Application을 만들 고 있었다.

이쯤 되자 그냥 swift나 objective-c 로 프로그램을 짜는게 빠르겠다는 생각이 들었고, 결국 최종적으로 현재의 형태인 Swift 프로젝트가 탄생했다.
처음엔 CoreImage에서 제공하는 텍스트 인식을 넣어서 블러처리를 하도록 코드를 짰었는데, 화면에서 텍스트를 거의 인식하지 못해서 영역을 지정해서 블러처리하는 것으로 변경했다.
Swift는 처음 써보는데, 생각보다 할만했다. 기존에 PyQT로 UI를 몇번 만들어 본 적이 있어서, 익숙했던 것 같다.

아직 블러 영역을 지정하는 좌표 계산이 정확하지 않은데, 일단은 그냥 쓰다가 누군가 관심을 가지게 된다면 좀 고치게 되지 않을까..

깃헙 주소 https://github.com/chlyoo/BlurScreen