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 )
'IT 프로그래밍 관련 > OpenCV' 카테고리의 다른 글
OpenCV 이미지 Transformations ( rotation, translation ) (0) | 2021.04.22 |
---|---|
OpenCV threshold, 이미지형태 변환(dilate,erode, opening, closing) (0) | 2021.04.22 |
OpenCV Image에 선 그리기 (ImageDraw) (0) | 2021.04.20 |
OpenCV Image resize , Crop (0) | 2021.04.20 |
OpenCV 이미지 열기, 화면 표시 방법, 이미지 저장 (0) | 2021.04.20 |
댓글