[python] PIL로 동영상 프레임 추출하기
이번 포스트에서는 Python의 PIL(Pillow) 라이브러리를 사용하여 동영상에서 프레임을 추출하는 방법에 대해 알아보겠습니다.
PIL(Pillow)은 Python에서 이미지 처리에 사용되는 강력한 라이브러리입니다. 이 라이브러리를 사용하면 동영상 파일에서 각각의 프레임을 추출하여 이미지로 저장할 수 있습니다.
먼저, 필요한 라이브러리를 설치해야 합니다. 아래의 명령어를 사용하여 Pillow를 설치합니다.
pip install Pillow
다음은 PIL을 사용하여 동영상 프레임을 추출하는 간단한 예제 코드입니다.
from PIL import Image
import cv2
# 동영상 파일 열기
video_file = 'video.mp4'
cap = cv2.VideoCapture(video_file)
# 추출할 프레임 인덱스 설정
frame_indexes = [0, 10, 20, 30]
# 프레임 추출 및 이미지로 저장
for index in frame_indexes:
cap.set(cv2.CAP_PROP_POS_FRAMES, index)
ret, frame = cap.read()
if ret:
# PIL 이미지로 변환
pil_image = Image.fromarray(frame)
# 이미지 저장
pil_image.save(f'frame_{index}.png')
# 동영상 파일 닫기
cap.release()
위의 코드에서는 동영상 파일을 열고, 추출할 프레임의 인덱스를 설정한 뒤, 해당 프레임을 추출하여 이미지로 저장하는 과정을 수행합니다. 코드에서는 frame_indexes
변수로 추출할 프레임의 인덱스를 설정하고, 이를 순회하며 각각의 프레임을 추출하여 frame_{index}.png
형식의 파일로 저장합니다.
추출된 이미지는 Pillow 라이브러리의 Image.fromarray()
메소드를 사용하여 numpy.ndarray
형식의 프레임을 PIL 이미지로 변환한 뒤 저장합니다.
동영상 파일을 읽어오기 위해 OpenCV의 cv2.VideoCapture
클래스를 사용하였습니다. 동영상 파일을 열고 읽어온 후에는 반드시 release()
메소드를 호출하여 파일을 닫아줘야 합니다.
이제 위의 예제 코드를 사용하여 동영상 프레임을 추출해보세요. 분석, 학습 등 다양한 용도로 활용할 수 있습니다.