본문 바로가기
함수 설명/컴퓨터 비전 (OpenCV, PIL)

[OpenCV] 비디오 생성 및 저장하기: cv2.VideoWriter() 사용 및 설명

by First Adventure 2024. 9. 29.
반응형

소개

  cv2.VideoWriter는 OpenCV에서 비디오 파일을 생성하거나 이미지를 비디오로 저장하는 함수입니다. 이 함수는 프레임을 순차적으로 비디오 파일로 저장할 때 사용되며, 비디오 코덱, 프레임 속도, 파일 형식을 지정할 수 있습니다. 비디오 처리가 끝난 후 결과를 저장하거나, 이미지를 비디오 파일로 변환할 때 유용하게 사용됩니다.

 

기본 사용법

# 기본 사용법
import cv2

# 비디오 저장을 위한 코덱과 출력 파일 설정
fourcc = cv2.VideoWriter_fourcc(*'XVID')  # 코덱 설정 (예: XVID)
out = cv2.VideoWriter('output_video.avi', fourcc, 20.0, (640, 480))

# 비디오 파일 또는 카메라 프레임을 읽어와 비디오로 저장
video = cv2.VideoCapture(0)

while video.isOpened():
    ret, frame = video.read()

    if not ret:
        break

    # 비디오 저장
    out.write(frame)

    # 프레임을 화면에 표시
    cv2.imshow('Video Frame', frame)

    # 'q' 키를 누르면 루프 종료
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 리소스 해제
video.release()
out.release()
cv2.destroyAllWindows()

상세 설명

  • 코덱 설정
    • cv2.VideoWriter_fourcc(*'XVID'): 비디오 파일을 저장할 때 사용할 코덱을 설정합니다. 코덱은 비디오 압축 및 저장 형식을 정의하는데, XVID, MJPG, MP4V 등 여러 가지가 있습니다.
  • 파일 이름: 'output_video.avi'는 저장될 비디오 파일의 이름입니다. 파일 형식은 비디오 파일 확장자를 통해 결정됩니다.
  • 프레임 속도: 20.0은 비디오의 초당 프레임 수(fps)를 의미합니다.
  • 프레임 크기: (640, 480)은 저장될 비디오 프레임의 너비와 높이입니다.
  • 활용
    • 비디오 저장: cv2.VideoWriter는 비디오 처리가 끝난 후 결과를 비디오 파일로 저장하거나, 카메라에서 실시간으로 입력받은 프레임을 저장할 때 사용됩니다.
    • 이미지 시퀀스를 비디오로 변환: 여러 장의 이미지를 하나의 비디오 파일로 저장할 때도 사용됩니다.

 

라이센스

  OpenCV 4.4.0 까지는 3-clause BSD license를 따르고 있으며 자유롭게 사용, 수정, 배포할 수 있으며, 상업적 목적으로도 사용할 수 있습니다.
  OpenCV 4.5.0 이상 부터는 Apache 2 License를 따르고 있습니다. 해당 라이선스는 사용, 수정, 배포, 상업적 이용을 자유롭게 허용하며, 사용자가 해당 소프트웨어의 기여자에 대한 특허 청구를 방지하도록 명시하는 것을 특징으로 합니다. 또한 수정된 코드를 배포할 때 변경 사항을 고지해야 하며, 특허 분쟁 시 관련 권리를 상실할 수 있습니다​.

 

관련 내용

  [OpenCV] 비디오 생성 및 저장하기: cv2.VideoWriter() 사용 및 설명

  [OpenCV] 카메라 및 비디오 파일에서 프레임 읽기: cv2.VideoCapture() 사용 및 설명

  [OpenCV] 이미지의 엣지를 보호하며 부드럽게: cv2.medianBlur() 사용 및 설명

  [OpenCV] 이미지 흐리게 만들기: cv2.GaussianBlur() 사용 및 설명

  [OpenCV] 이미지 색상 공간 변환: cv2.cvtColor() 사용 및 설명

  [OpenCV] 이미지 축소: cv2.pyrDown() 사용 및 설명

  [OpenCV] 이미지 확대: cv2.pyrUp() 사용 및 설명

  [OpenCV] 원 찾기: cv2.HoughCircles() 사용 및 설명

  [OpenCV] 직선 찾기: cv2.HoughLines() 사용 및 설명

  [OpenCV] 경계선 찾기: cv2.Canny() 사용 및 설명

  [OpenCV] 적응형 임계값 처리하기: cv2.adaptiveThreshold() 사용 및 설명

  [OpenCV] 이미지 임계값 처리: cv2.threshold() 사용 및 설명

  [OpenCV] 이미지의 원근 변환: cv2.warpPerspective() 사용 및 설명

  [OpenCV] 이미지 기하학적 변환: cv2.warpAffine() 사용 및 설명

  [OpenCV] 이미지 좌우, 상하 반전하기: cv2.flip() 사용 및 설명

  [OpenCV] 이미지 회전: cv2.rotate() 사용 및 설명

  [OpenCV] 이미지 크기 조절: cv2.resize() 사용 및 설명

  [OpenCV] 이미지 팽창하기: cv2.dilate() 사용 및 설명

  [OpenCV] 이미지 침식하기: cv2.erode() 사용 및 설명

  [OpenCV] 이미지 블렌딩하기: cv2.addWeighted() 사용 및 설명

  [OpenCV] 이미지 간 빼기: cv2.subtract 사용법() 사용 및 설명

  [OpenCV] 이미지 간 더하기: cv2.add() 사용 및 설명

  [OpenCV] 이미지에 다각형 그리기: cv2.polylines() 사용 및 설명

  [OpenCV] 이미지에 원 그리기: cv2.circle() 사용 및 설명

  [OpenCV] 이미지에 사각형 그리기: cv2.rectangle() 사용 및 설명

  [OpenCV] 이미지에 선 그리기: cv2.line 사용법() 사용 및 설명

  [OpenCV] 이미지에 텍스트 추가하기: cv2.putText() 사용 및 설명

  [OpenCV] 이미지 창에 표시하기: cv2.imshow() 사용 및 설명

  [OpenCV] 이미지 파일 저장하기: cv2.imwrite() 사용 및 설명

  [OpenCV] 이미지 파일 로드하기: cv2.imread() 사용 및 설명

반응형