본문 바로가기
IT 프로그래밍 관련/OpenCV

OpenCV 비디오파일 열기, 내 캠으로 비디오파일 저장

by 지나는행인 2021. 4. 21.
728x90

OpenCV로 비디오 파일 여는 코드 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import cv2
import numpy as np
 
# FPS : Frame per Second : 1초당 몇장의 사진으로 구성되어있나.
 
# 비디오 파일에서 읽어오기.
 
cap = cv2.VideoCapture('data/videos/chaplin.mp4')
                       # 비디오파일의 경로
 
if cap.isOpened() == False :    # isOpened() 함수는 True, False로 값이 나옴
    print('Error opening video stream of file')
 
else :
    # 비디오는 사진이 계속적으로 화면에 표시 되는 것이다. 반복문 필요
    while cap.isOpened() :
        
        # 사진을 한장씩 가져와서 
 
        ret, frame = cap.read()  
       # ret 에는 True , False 로 가져오고 , frame는 이미지파일을 numpy로 가져옴. 
       # 비디오에 관한 프레임이 있으면 ret은 True
 
       # 제대로 사진 가져왔으면, 화면에 표시
        if ret == True :
            cv2.imshow("Frame", frame) 
 
            #키보드에서 esc키를 누르면 exit 한다.
            if cv2.waitKey(25& 0xFF == 27 :
                break
 
        else : 
            break
 
cap.release() # 비디오 파일 닫는 코드, 꼭 써줘야함
 
cv2.destroyAllWindows()
 
cs

- 출력 결과 ( 비디오 파일이 출력 되는 화면임 )

 

 

 

 

위는 단순히 내가 가지고 있는 비디오파일을 읽어 실행시키는 코드이다.

 

그것말고 내 시스템에 캠이 있다면 , 캠으로부터 데이터를 가져와서 저장하고 다시

 

그 파일을 읽고 실행 시킬수 있다.

 

 

영상 저장 코드 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import cv2
import numpy as np
 
#캠으로부터 데이터 가져오기.
 
cap = cv2.VideoCapture(0)
                      # 파일경로 대신 , 0
                      # 내 환경에 캠이 하나라면, 0 (두개면 0과 1, 갯수대로 0부터 센다) 
if cap.isOpened() == False :
    print('Unable to read camera feed')
 
else :
    # 프레임 정보 가져오기 : 화면 크기 (width,height)
    frame_width = int(cap.get(3))  # 프레임 폭을 3으로 반환  
    frame_height = int(cap.get(4))  # 프레임 높이를 4로 반환
 
    # 저장시키는 코드
    # 영상을 저장하는 object  (VideoWriter)
    out = cv2.VideoWriter('data/videos/output.avi', cv2.VideoWriter_fourcc('M''J''P''G'), 10, (frame_width, frame_height) )
 
    # 캠으로부터 계속 입력 받는다.
    while True :
        ret, frame = cap.read()
 
        if ret == True : 
            out.write(frame)
 
            cv2.imshow('frame', frame)
 
                # esc누르면 저장 종료
            if cv2.waitKey(1& 0xFF == 27 :
                break  
 
        else :
            break
    
    cap.release()
    out.release()
 
    cv2.destroyAllWindows()
cs

* cv2.VideoWriter( outputFile, fourcc, frame, size )

- outputFile : 저장될 경로, 파일명

- fourcc : 코덱정보. cv2.VideoWriter_fourcc() 

           * 코덱정보는 cv2.VideoWriter_fourcc('M','J','P','G')  ,  cv2.VideoWriter_fourcc(*'MJPG)로 표현가능

- frame : 초당 저장될 프레임 , float

- size : 저장될 사이즈  ex) ( 640, 480 )

 

댓글