cv2.VideoCapture.get(옵션)
영상의 지정한 옵션 속성을 반환
import cv2
import os
path = '/home/test/test/data'
filePath = os.path.join(path, "vtest.avi")
print(filePath)
if os.path.isfile(filePath): # 해당 파일이 있는지 확인
# 영상 객체(파일) 가져오기
cap = cv2.VideoCapture(filePath)
else:
print("파일이 존재하지 않습니다.")
# 프레임을 정수형으로 형 변환
frameWidth = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) # 영상의 넓이(가로) 프레임
frameHeight = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) # 영상의 높이(세로) 프레임
frame_size = (frameWidth, frameHeight)
print('frame_size={}'.format(frame_size))
frameRate = 33
while True:
# 한 장의 이미지(frame)를 가져오기
# 영상 : 이미지(프레임)의 연속
# 정상적으로 읽어왔는지 -> retval
# 읽어온 프레임 -> frame
retval, frame = cap.read()
if not(retval): # 프레임정보를 정상적으로 읽지 못하면
break # while문을 빠져나가기
cv2.imshow('frame', frame) # 프레임 보여주기
key = cv2.waitKey(frameRate) # frameRate msec동안 한 프레임을 보여준다
# 키 입력을 받으면 키값을 key로 저장 -> esc == 27(아스키코드)
if key == 27:
break # while문을 빠져나가기
if cap.isOpened(): # 영상 파일(카메라)이 정상적으로 열렸는지(초기화되었는지) 여부
cap.release() # 영상 파일(카메라) 사용을 종료
cv2.destroyAllWindows()
import cv2
########### 카메라 대신 youtube영상으로 대체 ############
import pafy
url = 'https://www.youtube.com/watch?v=u_Q7Dkl7AIk'
video = pafy.new(url)
print('title = ', video.title)
print('video.rating = ', video.rating)
print('video.duration = ', video.duration)
best = video.getbest(preftype='mp4') # 'webm','3gp'
print('best.resolution', best.resolution)
cap=cv2.VideoCapture(best.url)
#########################################################
#cap = cv2.VideoCapture(0) # 0번 카메라
# frame 사이즈
frame_size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)),
int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
print('frame_size =', frame_size)
# 코덱 설정하기
#fourcc = cv2.VideoWriter_fourcc(*'DIVX') # ('D', 'I', 'V', 'X')
fourcc = cv2.VideoWriter_fourcc(*'XVID')
# 이미지 저장하기 위한 영상 파일 생성
out1 = cv2.VideoWriter('./data/record0.mp4',fourcc, 20.0, frame_size)
out2 = cv2.VideoWriter('./data/record1.mp4',fourcc, 20.0, frame_size,isColor=False)
while True:
retval, frame = cap.read() # 영상을 한 frame씩 읽어오기
if not retval:
break
out1.write(frame) # 영상 파일에 저장
# 이미지 컬러 변환
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
out2.write(gray) # 영상 파일에 저장
cv2.imshow('frame',frame) # 이미지 보여주기
cv2.imshow('gray',gray)
key = cv2.waitKey(25)
if key == 27:
break
cap.release() # 객체 해제
out1.release()
out2.release()
cv2.destroyAllWindows()