본문 바로가기
Data Science/OpenCV

OpenCV - VideoCapture, VideoWriter

by 루크 Luke 2022. 1. 3.
반응형

1. Import Library

import sys
import cv2
import matplotlib.pyplot as plt

 

2. VideoCapture Class

 

# 원래 있던 비디오 반전 시켜줌
cap = cv2.VideoCapture('./data/Another Day of Sun.mp4')
fps = round(cap.get(cv2.CAP_PROP_FPS))
delay = round(1000 / fps)

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

    inversed = ~frame

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

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

cap.release()
cv2.destroyAllWindows()
# 노트북 카메라 연결해서 반전 시켜줌
cap = cv2.VideoCapture(0)

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

    inversed = ~frame

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

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

cap.release()
cv2.destroyAllWindows()

 

3. VideoWriter Class

- 일련의 프레임을 동영상 파일로 저장할 수 있음

- 모두 크기와 데이터 타입이 같아야 함

- Fourcc (4-문자-코드, for character code) : 영상의 코덱, 압축방식, 색상, 픽셀 포맷 등을 정의하는 정수 값

# 웹카메라 입력을 비디오로 저장
cap = cv2.VideoCapture(0)

w = round(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
h = round(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fourcc = cv2.VideoWriter_fourcc(*'DIVX')  #*'DIVX' == 'D', 'I', 'V', 'X'
out = cv2.VideoWriter('./data/Oh my face.mp4', fourcc, 30, (w, h))

while True:
    ret, frame = cap.read()
    inversed = ~frame
    out.write(inversed)  # 저장할 애가 inversed인지 frame인지 넣으면 됨

    cv2.imshow('frame', frame)
    cv2.imshow('inversed', inversed)
    if cv2.waitKey(10) == 27:
        break
반응형

'Data Science > OpenCV' 카테고리의 다른 글

OpenCV - Filtering  (0) 2022.01.03
Start OpenCV and draw on the picture/video  (0) 2022.01.03

댓글