영상처리/OpenCV

동영상 출력

성혜영 2022. 6. 7. 14:24

OpenCV를 이용하면 동영상 파일에서 순차적으로 프레임을 읽어 이미지 형태로 출력

동영상 파일을 읽으려면 컴퓨터에 동영상 코덱을 읽을 수 있는 라이브러리 설치 필요

FFMPEG를 지원하므로 AVI나 MP4 등 다양한 형식의 동영상 파일을 읽을 수 있음

 

capture = cv2.VideoCapture(filename)

<동영상 입력 클래스>

 

이미지 입력 함수와 동일한 기능을 하지만 동영상은 클래스를 사용

단 ,이미지 입력 함수와 다르게 경로가 올바르지 않거나 코덱을 알 수 없을 때도 성공 여부를 반환하지 않음. 그러므로 별도의 함수를 만들어 동영상 파일을 열지 못했을 때 파일의 상태값을 보여줌.

파일명(filename) : 경로를 포함한 입력 파일의 이름

 

import cv2



capture = cv2.VideoCapture("Star.mp4")



while True:

    ret, frame = capture.read()



    if(capture.get(cv2.CAP_PROP_POS_FRAMES) == capture.get(cv2.CAP_PROP_FRAME_COUNT)):

        capture.open("Star.mp4")



    cv2.imshow("VideoFrame", frame)

    if cv2.waitKey(33) == ord('q'): break



capture.release()

cv2.destroyAllWindows()

<동영상 출력>

 

VideoCapture() : 단순히 현재 입력된 동영상 파일의 정보를 불러옴.

프레임 자체가 담겨 있지 않고, 동영상 파일의 프레임 설정이나 코덱 등에 대한 정보가 있음

동영상에서 프레임을 모두 표시하기 위해 반복문(while)을 사용함

capture.read() : 동영상 파일에서 프레임을 가져와 압축을 해제한 후 bool과 ndarray 반환

ret(bool) : capture 변수에서 정상적으로 프레임을 읽었는지 나타내고 frame(ndarray)는 현재 프레임을 나타냄

 

동영상은 끝이 존재하는 유한한 프레임을 가지므로 오류를 방지하고자 capture 변수에서 저장된 정보를 가져옴