import cv2
### 동영상 읽고 출력하기
cap = cv2.VideoCapture('./video.mp4')
# 웹캠 연동 방법 - 0
# cap = cv2.VideoCapture(0)
while cap.isOpened() :
# ret : 읽기 성공 여부 (T/F)
ret, frame = cap.read()
# 영상을 모두 플레이하면 닫는 기능
if not ret :
print('이미지 읽기 실패 또는 전체 영상 재생 완료')
break
cv2.imshow("video", frame) # 3000 -> 3초
key = cv2.waitKey(33)
# 숫자 1을 누르면 재생 멈추는 기능
if key == 49: # 49는 숫자 1
break
cap.release()
cv2.destroyAllWindows()
### 동영상 녹화하기
cap = cv2.VideoCapture('./video.mp4')
# 녹화 설정
fps = 30.0 # 초당 프레임이미지 수
# 영상의 크기
w = int(cap.get(3)) # 프레임의 가로
h = int(cap.get(4)) # 프레임의 세로
# 코덱 설정
codec = cv2.VideoWriter_fourcc(*"DIVX")
# 녹화 파일 설정
out = cv2.VideoWriter("record.avi", codec, fps, (w, h))
# 녹화 여부 설정
record = False
while cap.isOpened():
ret, frame = cap.read()
if not ret:
print('영상 재생 완료 or frame 읽기 실패')
break
cv2.imshow("video", frame)
key = cv2.waitKey(33)
if key == 49: # 숫자 1 -> 영상 멈춤!
print('녹화 종료')
break
elif key == 50: # 숫자 2 -> 영상 녹화!
print("녹화 시작")
record = True
if record :
out.write(frame)
cap.release()
cv2.destroyAllWindows()
### 영상 캡쳐하기
- 동영상에서 한 프레임을 이미지 파일로 저장하기
# 영상 재생
cap = cv2.VideoCapture('./video.mp4')
# 웹캠 연동 방법 - 0
# cap = cv2.VideoCapture(0)
# 파일명 구분을 위한 카운터 변수
cnt = 0
while cap.isOpened() :
# ret : 읽기 성공 여부 (T/F)
ret, frame = cap.read()
# 영상을 모두 플레이하면 닫는 기능
if not ret :
print('이미지 읽기 실패 또는 전체 영상 재생 완료')
break
cv2.imshow("video", frame) # 3000 -> 3초
key = cv2.waitKey(33)
# 숫자 1을 누르면 재생 멈추는 기능
if key == 49: # 49는 숫자 1
break
# 숫자 2를 누르면 캡쳐되는 기능
elif key == 50:
cnt += 1
print(f'pic{cnt}.png 파일 저장')
cv2.imwrite(f'pic{cnt}.png', frame, params=[cv2.IMWRITE_PNG_COMPRESSION, 0])
# params=[cv2.IMWRITE_PNG_COMPRESSION, 0] -> 압축하지 않은 PNG
# 압출률 0~9 설정 가능
cap.release()
cv2.destroyAllWindows()
댓글