OpenCV 비전 실무15장 · 비디오 처리와 실시간 영상처리21 / 22← 이전목차다음 →MetaContents

15장. 비디오 처리와 실시간 영상처리

정리

동영상 읽고 쓰기, 움직임 찾기, 실시간 처리의 세 칸으로 15장을 요약한 인포그래픽
  • 동영상은 프레임(사진)을 FPS 의 빠르기로 넘긴 것입니다. 10fps 면 한 장에 1000 ÷ 10 = 100ms, 80장이면 8초입니다.
  • cv2.VideoCapture 로 열고 isOpened() 로 확인한 뒤, ok, frame = cap.read() 를 ok 가 False 가 될 때까지 되풀이하고 release() 로 닫습니다. 속성은 cap.get(cv2.CAP_PROP_...) 로 읽고 int(...) 로 바꿉니다.
  • cv2.VideoWriter(이름, fourcc, fps, (가로, 세로), isColor) 로 저장합니다. 크기와 컬러가 맞지 않는 프레임은 조용히 빠지므로 저장 뒤 다시 열어 셉니다.
  • 동영상 처리는 앞 장들의 사진 처리(흑백, 블러, 이진화, 모폴로지, Canny)를 프레임마다 되풀이하는 것입니다.
  • 움직임은 프레임 차이(cv2.absdiff)로 빠르게, 배경 빼기(중앙값 배경, MOG2)로 통째로 찾습니다. 마당 동영상에서 프레임 차이는 공을 초승달 두 조각으로 잡았고, 중앙값 배경은 공과 수레를 통째로 잡아 35번에서 상자 2개를 그렸습니다. MOG2 는 첫 장에서 화면 전체를 전경으로 보았습니다.
  • 실시간은 한 장의 처리를 프레임 간격 안에 끝내는 것입니다. 교안 PC 에서 무거운 처리는 원래 크기에서 30fps 에 늦어 80장 중 22장을 건너뛰었고, 가로세로를 절반으로 줄이자 3.9배 빨라져 제때 끝났습니다.
  • 웹캠은 cv2.VideoCapture(0) 과 cv2.waitKey(1) 로 다루고 q 로 끝냅니다. 사람이 찍히는 영상은 알리고, 필요한 만큼만 찍고, 가리고 지웁니다.
← 이전 절15장 · 프로젝트 1 — 주차장 입구 동영상 요약 사진 만들기다음 절 →15장 · 확인문제와 해답