Python, Django
비디오 파일에서 설정 단위로 이미지 캡쳐
himzei
2022. 8. 30. 11:25
파이썬을 활용한 n초단위 이미지 캡쳐
애플 웹페이지를 보다 보면 마우스 휠에 따라 마치 동영상처럼 움직이는 사이트를 보게 되었다.
동영상 파일을 불러와서 제작한 것이 아니라
수백장의 이미지 파일을 불러와서 브라우저에 뿌려주는 방식이다.
이처럼 동영상을 여러장의 이미지로 자연스럼게 하기 위해서는 일일이 캡쳐를 해서 만들기 보다는
파이썬을 활용하여 이미지를 캠쳐하면
동영상의 특정구간을 원하는 단위로 캡쳐가 가능하다.
# pip install opencv-python
import cv2
img_capture = cv2.VideoCapture('video.mp4')
# 이미지 캡쳐한 값을 success에는 bool 값과 image에는 numpy.ndarray 반환
success, image = img_capture.read()
# 영상정보 확인하기
fps = img_capture.get(cv2.CAP_PROP_FPS)
frame_count = img_capture.get(cv2.CAP_PROP_FRAME_COUNT)
duration = frame_count / fps
print(fps, frame_count, duration)
# n초 단위로 캡쳐하기 위한 n값 설정
increase_second = 1
# second 0부터 시작해서 1씩 증가
second = 0
# 저장할 파일 이름을 0부터 시작해서 사진갯수 만큼 증가
count = 0
while success:
cv2.imwrite(f"picture{count}.jpg", image)
success, image = img_capture.read()
# n초 단위로 사진캡쳐
img_capture.set(cv2.CAP_PROP_POS_MSEC, second * 1000)
print(f"이미지 생성 : picture{count}.jpg", success)
count += 1
second += increase_second