상세 컨텐츠

본문 제목

카메라와 동영상 처리하기 2

영상처리/OpenCV Python

by cepiloth 2021. 5. 12. 18:16

본문

728x90
반응형

cv2.VideoWriter 클래스

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

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

• 동영상 파일의 코덱, 압축 방식, 색상, 픽셀 포맷 등을 정의하는 정수 값

 

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

• 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(filename, fourcc, fps, frameSize, isColor=None) -> retval

 

• retval: 성공하면 True, 실패하면 False.

cv2.VideoWriter.open(filename, fourcc, fps, frameSize, isColor=None) -> retval

 

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

• retval: 성공하면 True, 실패하면 False.

cv2.VideoWriter.isOpened() -> retval

 

프레임 저장하기

• image: 저장할 프레임 (numpy.ndarray)

cv2.VideoWriter.write(image) -> None

 

웹카메라 입력을 동영상으로 저장하기

import sys
import cv2


cap = cv2.VideoCapture(0)

if not cap.isOpened():
    print("Camera open failed!")
    sys.exit()

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))

if not out.isOpened():
    print('File open failed!')
    cap.release()
    sys.exit()

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

    if not ret:
        break

    inversed = ~frame

    out.write(inversed)

    cv2.imshow('frame', frame)
    cv2.imshow('inversed', inversed)

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

cap.release()
out.release()
cv2.destroyAllWindows()

 

728x90
반응형

'영상처리 > OpenCV Python' 카테고리의 다른 글

영상의 산술 연산  (0) 2021.05.25
영상의 화소 처리 방법  (0) 2021.05.25
카메라와 동영상 처리하기 1  (0) 2021.05.12
OpenCV 그리기 함수  (0) 2021.05.12
영상의 생성, 복사, 부분 영상 추출  (0) 2021.05.12

관련글 더보기

댓글 영역