동영상 저장하기

yeoni·2023년 6월 28일
0

opencv

목록 보기
10/12

cv2.VideoWriter 클래스

  • OpenCV에서는 cv2.VideoWriter 클래스를 이용하여 일련의 프레임을 동영상 파일로 저장할 수 있음
  • 일련의 프레임은 모두 크기와 데이터 타입이 같아야함

Fourcc (4-문자코드, four character code)

  • 동영상 파일의 코덱, 압축방식, 색상, 픽셀 포맷 등을 정의하는 정수값
  • 주요 Fourcc 예제:
    • cv2.VideoWriter_fourcc(*'DIVX'): DIVX MPEG-4 코덱
    • cv2.VideoWriter_fourcc(*'XVID'): XVID MPEG-4 코덱
    • cv2.VideoWriter_fourcc(*'X264'): H.264/AVC 코덱
    • cv2.VideoWriter_fourcc(*'MJPG'): Motion-JPEG 코덱

저장을 위한 동영상 파일 열기

cv2.VideoWriter(filename, fourcc, fps, frameSize, isColor=None) -> retval
  • filename: 비디오 파일 이름(e.g. 'video.mp4')
  • fourcc: fourcc(e.g. cv2.VideoWriter_fourcc(*'DIVX'))
  • fps: 초당프레임수(e.g. 30)
  • frameSize: 프레임 크기. (width, height) 튜플.
  • isColor: 컬러영상이면 True, 그렇지않으면 False.
  • retval: cv2.VideoWriter 객체
cv2.VideoWriter.open(filename, fourcc, fps, frameSize, isColor=None) -> retval
  • retval: 성공하면 True, 실패하면 False.

비디오 파일이 준비되었는지 확인

cv2.VideoWriter.isOpened() -> retval
  • retval: 성공하면 True, 실패하면 False.

프레임 저장하기

cv2.VideoWriter.write(image) -> None
  • image: 저장할 프레임(numpy.ndarray)

예제

import cv2

cap = cv2.VideoCapture(0)

w = round(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
h = round(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = cap.get(cv2.CAP_PROP_FPS)
fourcc = cv2.VideoWriter_fourcc(*'DIVX') # *'DIVX' == 'D', 'I', 'V', 'X'
delay = round(1000 / fps)
out = cv2.VideoWriter('output.avi', fourcc, fps, (w, h))

while True:
    ret, frame = cap.read()

    out.write(frame)

    cv2.imshow('frame', frame)

    if cv2.waitKey(delay) == 27:
        break

Reference
1) 제로베이스 데이터스쿨 강의자료

profile
데이터 사이언스 / just do it

0개의 댓글