Aim:
부트캠프에서는 매일 오후 1시마다 출석을 하는데, 인증을 두번한다.
첫번째는, 핸드폰의 HRD-net 어플로 QR코드 찍기(1시 정각 10분전후 / QR코드는 매일 똑같은걸 찍는다.)
두번째는, Zoom회의실에 들어가서 웹캠을 킨상태로 대기하면 정각에 스크린샷을 찍는다.
만약 내가 없어도 이 두가지를 컴퓨터가 모두 혼자서 할 수 있다면...?
Hypothesis:
1. QR코드 찍기.
컴퓨터에서 핸드폰 어플을 실행할 수 있는 Emulator를 받는다.
Emulator에서 해당 어플을 다운받고 QR코드를 찍으려고 외부카메라를 키게되면, 실제화면 대신 이미지파일/동영상 파일을 읽도록 속인다.
2. 줌 회의실 라이브 출석
줌에는 배경화면을 가려주는 기능이 있다. 이 기능은 사람 얼굴을 인식해서 뒷 배경을 가려준다.
그 뒷 배경을 내가 미리 녹화해놓은 동영상으로 대체한다.
스크린샷을 찍고 수강생들이 웹캠을 끄면 나도 같이 끈다.
위 두가지는 특정 시간에 독립적으로 실행된다.
Method:
1. 아무것도 인식이 되지 않게 카메라를 가리고, Emulator를 켜놓고, 줌회의실에 들어가서 대기한다.
2. 시간을 읽어온다. (매초 / 매분)
3. 스크린샷을 찍는 시간-2 분에 "화면켜기" 버튼을 누른다.
4. 화면의 얼굴을 count하여, totalStudents / 2(또는 3)이 되면 "화면끄기" 버튼을 누른다. (반에 약 35명이 있으므로, 10~15명이 적당하다)
5. 웹캠을 끄고, Emulator의 어플을 실행한다.
6. Emulator의 어플을 실행시켜 QR코드를 찍을 수 있게 외부 카메라를 켠다.
7. 외부 카메라에서 읽어오는 화면을 (가렸기때문에 아무것도 안보인다) QR코드 이미지 / 준비한 QR코드 영상으로 넣는다.
Progress Notes:
[221102]
약 1분간의 웹캠 영상을 찍어놓고, 수정을 하여 반복재생되어도 자연스럽게 찍었다. QR코드 이미지와 비디오 둘다 준비를 해놓았고, 혹시 몰라서 종이로도 출력해놨다. 자바로 라이브러리가 있는지 검색해봤는데 opencv라는걸 찾았다. 하지만 자바로는 구현하기 어려울 것같고, 파이썬으로 도전해보려고 한다. 추가로 기본적으로 제공되는 win32api에서 mouse_event 도 찾았다.
Imageops 라는걸 찾았다.만약 얼굴인식을 실패할 경우, rgb 값으로 웹캠이 켜져있는지 꺼져있는지 확인할 수 있을 것 같다.
인텔리제이에서 파이썬을 어떻게 사용해야할지 모르겠다....Spyder라는걸 새로 설치했다.
[221103]
OpenCV 라이브러리안에는 내가 원하는 기능이 없는 것같다. StackOverFlow에 전문가들에게 물어봤더니, 이런 답변이 왔다.
대충 요약하면
1. 이론적으로 가능하지만 쉽진 않을 것이다.
2. 자바 언어로는 적당하지 않고, C 또는 C++를 사용해야한다.
3. 기존 드라이버를 수정하거나, 새로 직접 만들어야한다.
4. OpenCV는 기본적인 웹캠 뷰어 기능이나 UI같은 편의 기능을 제공한다(실제로는 그렇진 않은것 같지만..)
다른 방법을 생각해봐야겠다,
[221106]
현업에서 일하고 있는 전문가에게 물어봤다.
왜 검색을 못하냐며 키워드를 줬다. "How to replace camera view as a image?"
VCam이라는 중국에서 만들어진 소프트웨어가 바로 검색결과에 나왔다. 허무하다 ㅋㅋ...역시 전문가는 다른듯하다.
바로 다운로드 받아서 관련 세팅을 끝냈다. 월요일이 되면 한번 실험을 해봐야겠다.
Estimated Result:
Code:
Python
https://github.com/724thomas/AttendenceCheck.git
Conclusion:
Bibliography:
[Python]
https://stackoverflow.com/questions/74288030/python-opencv-deceiving-external-camera?noredirect=1#comment131168581_74288030 (Tom.C 22.11.02)
'개인 프로젝트' 카테고리의 다른 글
[스프링 부트] 대학교 도서관 (1) | 2022.12.11 |
---|---|
[Spring] 유저 주문내역 (0) | 2022.11.11 |
ATM 기계 (0) | 2022.10.30 |
[완료]애니팡! 자동화 [Java / Python] - 221104 (0) | 2022.10.17 |
주식정보 가져와서 보기좋게 출력하기 [완료] - 221029 (0) | 2022.10.17 |