OpenCV로 비디오 열기: 기본 개념과 사용 방법

김성빈·2024년 5월 23일
0

Modern Computer Vision

목록 보기
45/117


아래 코드는 드럼치는 영상을 실행하고 영상이 끝나면 자동으로 꺼지게 하는 코드이다.

import cv2

cap = cv2.VideoCapture('./videos/drummer.mp4')

while cap.isOpened():
    
    ret, frame = cap.read()
    
    # 프레임이 올바르게 읽혀지면 ret는 True
    
    if not ret:
        print("Stream stopped.")
        break

    cv2.imshow('Video', frame)
    
    if cv2.waitKey(1) == ord('q'):
        break
    
        
cap.release()
cv2.destroyAllWindows()

jupyter notebook 폴더안에 드럼을 치는 영상이 있고,

그 영상을 코드로 실행시키기 위해

드럼치는 영상의 상대위치를 cv2.VideoCapture로 넣어줬고,

메서드(isOpened)를 사용하여 비디오 스트림이 열렸는지 확인

while cap.isOpened():

read를 이용해서 프레임을 읽는데 프레임을 읽지 못하면, 스트림이 멈춘것으로 판단하여 루프를 종료하는 코드이다.

ret, frame = cap.read()
    
    # 프레임이 올바르게 읽혀지면 ret는 True
    
    if not ret:
        print("Stream stopped.")
        break

그리고 만약 키보드 'q'가 입력됐을경우 루프를 종료하고 비디오 스트림을 닫고,

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

마지막 두줄은 비디 캐캡처 객체를 해제 후 모든창을 닫는 내용이다.

cap.release()
cv2.destroyAllWindows()

cap.get(id)

비디오 캡처 객체의 다양한 속성을 가져오는 매서드

드럼치는 영상의 속성을 가져와서 출력해보면

import cv2

cap = cv2.VideoCapture('./videos/drummer.mp4')

for i in range(0,18):
    print(cap.get(i))

결과

0.0 #0비디오 캡처의 프레임 위치(현재 프레임 인덱스)
0.0 #1 캡처된 비디오의 전체 프레임 수
3.3333333333333335e-05 #2 비디오 프레임 속도(프레임당 시간 간격)
640.0 #3 비디오 프레임의 가로(너비)
360.0 #4 비디오 프레임의 세로(높이)
30.0 #5 프레임 속도(프레임당 초당 프레임 수)
875967080.0 #6 현재 코덱의 FourCC 코드
466.0 #7 녹음된 프레임의 가로 크기
0.0 # 8 녹음된 프레임의 세로 크기 
0.0 #9 동영상 파일의 총 프레임 수
0.0
0.0
0.0
0.0
0.0
0.0
1.0
0.0

get(id)를 통해 해당 영상이 640x360 크기의 영상이

30프레임으로 동작한다는 정보를 알 수 있다.

profile
감사합니다. https://www.youtube.com/channel/UCxlkiu9_aWijoD7BannNM7w

0개의 댓글

관련 채용 정보