[opencv-python] 비디오 읽고 쓰기
2019. 7. 1. 01:39ㆍPython-이론/python-opencv
비디오 읽고 쓰기
이전에는 사진을 읽고 저장했다면 이번에는 비디오를 읽고 써보겠습니다. 비디오를 읽어 오기 위해서는 컴퓨터에 웹켐이 필요합니다. 그리고 웹캠을 실행하기 위해서 권한을 주어야합니다. 필자의 경우 파이참에서 처음 실행시킬 때 허용하시겠습니까 라고 나왔고 mac 시스템 환경 설정에 보안 및 개인 정보 보호에서 설정을 바꿔 줄 수 있습니다.
권한
권한은 카메라 목록에서 취소 혹은 적용시킬 수 있다.
import numpy as np
import cv2
def showVideo():
cap = cv2.VideoCapture(0)
cap.set(3, 960)
cap.set(4, 640)
while True:
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow('video', gray)
k = cv2.waitKey(1) & 0xff
if k == 27:
break
cap.release()
cv2.destroyAllWindows()
showVideo()
결과
코드 설명
import numpy as np
import cv2
def showVideo():
cap = cv2.VideoCapture(0) # 실행시킬 웹캠을 설정 할 수 있다.
# 혹은 비디오 저장된 위치를 넣어서 사용할 수 있다. cv2.VideoCapture("video.avi")
cap.set(3, 960) # 가로길이 설정할 수 있다.
cap.set(4, 640) # 세로 길이 설정할 수 있다.
while True:
ret, frame = cap.read() # 재생되는 비디오를 한프레임씩 읽습니다.
# 제대로 읽었다면 ret이 true이고 아니라면 false입니다.
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) #영상의 컬러를 설정해준다.
cv2.imshow('video', gray) #비디오를 틀어준다.
k = cv2.waitKey(1) & 0xff # 1ms뒤에 뒤에 코드 실행해준다.
if k == 27: #
break
cap.release() # cap의 객체를 반드시 종료시켜주어야한다.
cv2.destroyAllWindows() # 모든 화면 종료해준다.
showVideo()
비디오 쓰기
이전에는 비디오를 촬영만하는 것을 했다면 이번에는 비디오를 촬영해서 저장해보겠습니다.
import numpy as np
import cv2
def writeVideo():
cap = cv2.VideoCapture(0)
cap.set(3, 960)
cap.set(4, 480)
fps = 20
width = int(cap.get(3))
height = int(cap.get(4))
fcc = cv2.VideoWriter_fourcc('D', 'I', 'V', 'X')
out = cv2.VideoWriter('../resource/video/DIVX.avi', fcc, fps, (width, height))
while True:
ret, frame = cap.read()
cv2.imshow('divx', frame)
k = cv2.waitKey(1) & 0xff
if k == 27:
break
cap.release()
out.release()
cv2.destroyAllWindows()
writeVideo()
결과
코드 설명
import numpy as np
import cv2
def writeVideo():
cap = cv2.VideoCapture(0) # 웹캠 설정
cap.set(3, 960) # 영상 가로길이 설정
cap.set(4, 480) # 영상 세로길이 설정
fps = 20
width = int(cap.get(3)) # 가로 길이 가져오기
height = int(cap.get(4)) # 세로 길이 가져오기
fcc = cv2.VideoWriter_fourcc('D', 'I', 'V', 'X') #DIVX 코덱 적용
# 코덱 종류
# DIVX, XVID, MJPG, X264, WMV1, WMV2
out = cv2.VideoWriter('../resource/video/DIVX.avi', fcc, fps, (width, height))
# 비디오 저장을 위한 객체를 생성한다.
# cv2.VideoWriter(저장 위치, 코덱, 프레임, (가로, 세로))
while True:
ret, frame = cap.read()
cv2.imshow('divx', frame) # 촬영되는 영상보여준다.
out.write(frame) # 촬영되는 영상을 저장하는 객체에 써준다.
k = cv2.waitKey(1) & 0xff
if k == 27:
break
cap.release() # cap 객체 해제
out.release() # out 객체 해제
cv2.destroyAllWindows()
writeVideo()
참고 블로그
'Python-이론 > python-opencv' 카테고리의 다른 글
[opencv-python] 도형 그리기 with 마우스 (0) | 2019.07.02 |
---|---|
[opencv-python] 도형 그리기 (0) | 2019.07.01 |
[opencv-python] 이미지 읽어서 출력하기 (1) | 2019.06.30 |
opencv 설치하기 (0) | 2019.06.29 |
[OpenCV-python] resize, rotation, move, perspective (0) | 2018.06.13 |