Skip to content

spark2357/monitoring-cctv

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

작업 배경

  1. 원룸 건물 관리 중 쓰레기 처리 규칙을 위반하는 상황이 발생하여 하루치 CCTV를 돌려봐야 할 상황이 발생했다.
  2. 많은 시간이 소요되고, 눈 건강에도 악영향이 있다. 이번 경우가 아니어도 CCTV를 봐야 할 일이 종종 생긴다.
  3. 제공되는 플레이어에는 이벤트 감지 시에만 녹화가 되긴 하지만, 카메라 범위에 걸치는 도로의 움직임도 다 이벤트로 감지하여 효용성이 부족하다.
  4. 단순히 언제 사람이 등장하는지만 알면 되기 때문에 복잡한 기술이 필요하지 않고, 필요한 기능만큼의 도구를 쉽게 구할 수 없었다.

작업 과정

  • opencv-python, mss, numpy, Tkinter를 사용했다.
  • 우선 cctv 업체에서 제공하는 플레이어에서 재생되는 영상에서 특정 영역을 선택하여 이벤트를 잘 탐지하는지 확인하였다.
  • mss로 모니터를 선택하여 스크린샷을 찍은 후, cv2로 관심 영역을 선택한다.
  • 이후 일정 시간(0.5초)마다 스크린샷을 찍어서 이전 스크린샷과 다른 점이 있는지 확인한다.
  • 이벤트가 언제 발생했는지 확인하기 위해서 플레이어에서 시간이 나오는 영역을 추가로 지정하여 이벤트 발생 시 해당 영역을 가지고 오도록 했다.
  • 사용 대상이 부모님이기 때문에 데스크탑에서 GUI로 쉽게 다룰 수 있도록 Tkinter로 단순하게 만들었다.

Screenshot_20260107_235451_Samsung Notes

만났던 문제 및 고민들

  1. CCTV 영상이 상시 녹화가 아니라, 이벤트 녹화여서 중간중간 끊겨있는 부분이 있었다. 해당 부분에는 파란색 그라데이션 배경이 카메라 대신 나왔다.

    • 이전 스크린샷과 비교해서 이벤트를 감지하기 때문에 파란 화면으로 바뀌는 것도 이벤트로 감지되었다.
    • 화면이 파란색 계열 그라데이션임을 이용해서 해당 영역의 RGB 값 중 R 값의 평균이 55이하인 경우는 영상이 아닌 것으로 판단했다.
    • R이 제일 높은 부분이 54 정도인 것을 확인했고, 영역을 부분으로 나눠서 그라데이션에 따른 R 평균값 변화도 살펴봤다.
    • '녹화된 영상 없음'이라는 하얀색 안내 문구가 있었는데, 하얀색이라서 R값이 255가 되는 부분도 있지만, 그렇게 작게 관심 영역을 설정할 일이 없기도 하고, 평균을 내면 충분히 임계값으로 설정한 55를 넘지 않았다.
  2. 스크린샷 찍을 모니터를 선택할 때, 개발 환경에서는 모니터가 두개였지만, 부모님이 사용하실 환경에서는 모니터가 하나기 때문에 모니터 리스트의 마지막을 기본값으로 설정했고, UI를 최대한 단순화하기 위해서 모니터 선택 기능을 뺐다.

  3. 이벤트 발생 시각을 기록할 방법으로 영역을 하나 더 설정하도록 했는데, OCR이나 다른 기술은 과한 느낌이 있어서 사용하지 않았다. 사용할 컴퓨터 사양이 안 좋아서 필수가 아닌 기술을 추가하지 않았다.

  4. 이벤트 발생 시 해당 사진과 시각을 모아서 화면에 표시해주는데, 저장 기능은 만들지 않았다. 저장 기능이 필수도 아니고, 저장이 필요하다면 특정 영역보다는 전체 화면 영역이 필요하고, 이 프로그램의 기능은 돌려 볼 지점을 대신 찾아주는 것이기 때문에 돌려보면서 원하는 장면을 따로 캡처하는 것이 더 편하다고 생각했다.

더 만들어볼 만한 것들

  1. 관심 영역을 여러개 지정하기.
  2. 현재는 하나의 이벤트에서 연속된 스크린샷을 모두 이벤트로 감지해서 화면에 표시하는데, 최초 이벤트 발생과 연속으로 발생한 이벤트들은 하나의 사건이기 때문에 표시에서 제외하는 것이 UX 측면에서 더 좋을 것 같다.
  3. 만약 필요하다면 이벤트 발생 시각을 파일로 내보내서 정리해 두거나 추가로 활용할 수 있게 하기.

About

다른 플레이어에서 재생 중인 CCTV 영상의 특정 영역 이벤트 감지

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages