15장. 비디오 처리와 실시간 영상처리
개인정보와 동영상
가게 입구에 CCTV 를 달면 "CCTV 촬영 중" 안내판을 붙입니다. 찍히는 사람이 알 수 있게 하고, 필요한 곳만 비추고, 정해진 기간이 지나면 지웁니다. 동영상은 사진보다 훨씬 많은 장면이 담기고 사람의 얼굴, 차량 번호, 움직인 경로까지 남기 때문에 이런 약속이 더 무겁습니다.
그림의 세 상자는 사람이 찍힐 수 있는 동영상을 다룰 때 먼저 챙길 일입니다. 1장의 주의할 점에서 본 것처럼 개인정보가 찍히는 영상은 모으고 쓰기 전에 법과 동의 절차를 먼저 확인합니다. 여기서 안내판이 알리고 동의받기이고, 정해진 기간 뒤에 지우는 일이 셋째 상자입니다. 이 교안은 그래서 사람이 없는 도형 동영상만 씁니다.
동영상을 다룰 때 챙길 것
| 단계 | 챙길 것 |
|---|---|
| 찍기 전 | 찍는다는 것을 알리고, 필요하면 동의를 받는다. 기관의 규정과 개인정보 보호 법령을 확인한다 |
| 찍을 때 | 목적에 필요한 곳만 비추고, 필요 이상으로 높은 해상도·긴 시간을 남기지 않는다 |
| 다룰 때 | 얼굴과 차량 번호처럼 사람을 알아볼 수 있는 곳은 흐리게 가린다 |
| 다 쓴 뒤 | 정해 둔 기간이 지나면 지우고, 공유할 때는 가린 판만 넘긴다 |
import cv2
# 주차장 입구 동영상의 첫 프레임에서 안내판 자리를 흐리게 가려 본다(가리기 연습)
cap = cv2.VideoCapture("ch15_parking.mp4")
ok, frame = cap.read()
cap.release()
x, y, w, h = 20, 30, 50, 40 # 가릴 네모: 왼쪽 위 (20, 30), 가로 50, 세로 40
roi = frame[y:y + h, x:x + w] # 그 자리만 잘라 낸다(배열은 [세로, 가로])
frame[y:y + h, x:x + w] = cv2.GaussianBlur(roi, (31, 31), 0) # 아주 세게 흐려 덮어쓴다
print("가린 자리의 모양:", roi.shape) # 결과: (40, 50, 3)주의할 점
- 이 교안의 동영상은 사람이 나오지 않는 가상 동영상이라 가리기를 안내판 자리로 연습했습니다. 실제 영상에서 얼굴이나 번호판의 자리를 찾는 일은 17장부터 다루는 탐지 모델의 몫입니다.
- 흐리게 가린 동영상도 블러가 약하면 알아볼 수 있습니다. 커널을 크게 하거나 단색으로 덮습니다.