[Opencv] 동영상 출력

_찬·2022년 9월 17일
0

Opencv

목록 보기
2/6

전에 다뤘던 내용은 이미지에 관한 내용이였다.
이제 영상으로 넘어가보도록 하겠다.


import cv2

cap = cv2.VideoCapture('video.mp4')

먼저 이미지 파일을 불러와서 변수에 넣어준다.

그리고 영상이 잘 열렸는지 계속 확인을 하기 위해서 isOpened 라는 것을
이용하여서 와일문을 돌려 준다.

while cap.isOpened(): 

자 그럼 이제 와일문 안에는 어떤 것이 들어가야 할까?
1. ret , 2. 사용자 입력이 들어가야 한다.

ret : 성공 여부를 확인
frame : 받아온 이미지


만약 파일이 손상되었거나 경로가 잘못되어서 파일이 열리지 않는다면
ret 에서 에러가 날 것이다.

그러니 ret는 와일문 안에 넣어주어야 하고 영상 또한 중간에 끌 수 있도록 해야하기 때문에 사용자 입력을 넣어준다.

그럼 코드가 이렇게 된다.

while cap.isOpened(): # 동영상 파일이 올바로 열렸는지 
    ret, frame = cap.read() # ret : 성공 여부, frame : 받아온 이미지 (프레임)
    if not ret : 
        print('더 이상 가져올 프레임이 없음')
        break
    
    cv2.imshow('video', frame)
    
    if cv2.waitKey(25) == ord('q'): # waitKey 안의 값을 조정하면 영상의 속도가 달라짐 
        print('사용자 입력에 의해 종료 . . .')
        break 

마지막에는 이 코드도 무조건 넣어주어야 한다.

cap.release() # 자원 해제 
cv2.destroyAllWindows() # 모든 창 닫기

실행 :

캡쳐본이라서 사진이 움직이지는 않지만 정말 잘 나온다.


또한 동영상이 된다면 코드를 조금 수정해서 노트북의 캠도 사용할 수 있다.

cap = cv2.VideoCapture(0) # 0번째 카메라 장치 (Device ID)

if not cap.isOpened(): # 카메라가 잘 열리지 않은 경우 
    exit() # 프로그램 종료 

while cap.isOpened(): # 동영상 파일이 올바로 열렸는지 
    ret, frame = cap.read() # ret : 성공 여부, frame : 받아온 이미지 (프레임)
    if not ret : 
        break
    
    cv2.imshow('camera', frame)
    
    if cv2.waitKey(25) == ord('q'): # waitKey 안의 값을 조정하면 영상의 속도가 달라짐 
        print('사용자 입력에 의해 종료 . . .')
        break 
cap.release() # 자원 해제 
cv2.destroyAllWindows() # 모든 창 닫기

실행 :

profile
꾸준한 사람이 되길!

0개의 댓글