아래 코드는 드럼치는 영상을 실행하고 영상이 끝나면 자동으로 꺼지게 하는 코드이다.
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()
비디오 캡처 객체의 다양한 속성을 가져오는 매서드
드럼치는 영상의 속성을 가져와서 출력해보면
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프레임으로 동작한다는 정보를 알 수 있다.