영상처리/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 변수에서 저장된 정보를 가져옴