[python] PIL로 동영상 흑백 변환하기

이번에는 Python Imaging Library(PIL)을 사용하여 동영상을 흑백으로 변환하는 방법을 알아보겠습니다. PIL은 이미지 처리를 위한 강력한 라이브러리로, 다양한 이미지 조작 기능을 제공합니다.

패키지 설치하기

먼저 PIL을 설치해야 합니다. 아래 명령을 사용하여 PIL을 설치할 수 있습니다.

pip install Pillow

코드 작성하기

from PIL import Image
import cv2

# 동영상 파일 열기
video_path = 'input_video.mp4'
cap = cv2.VideoCapture(video_path)

# 동영상 프레임 수 및 크기 가져오기
fps = cap.get(cv2.CAP_PROP_FPS)
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))

# 저장할 동영상 설정
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
output_path = 'output_video.mp4'
out = cv2.VideoWriter(output_path, fourcc, fps, (width, height), False)

while True:
    ret, frame = cap.read()

    if not ret:
        break

    # 이미지를 PIL 이미지로 변환
    pil_image = Image.fromarray(frame)

    # PIL 이미지를 흑백으로 변환
    pil_image = pil_image.convert('L')

    # PIL 이미지를 다시 OpenCV 이미지로 변환
    frame = cv2.cvtColor(np.array(pil_image), cv2.COLOR_GRAY2BGR)

    # 변환된 프레임을 동영상으로 저장
    out.write(frame)

# 동영상 파일 닫기
cap.release()
out.release()
cv2.destroyAllWindows()

위 코드는 OpenCV를 사용하여 입력 동영상의 프레임을 PIL 이미지로 변환하고, 그 이미지를 흑백으로 변환한 뒤 다시 OpenCV 이미지로 변환하여 출력 동영상에 저장하는 코드입니다.

실행하기

위 코드를 실행하기 전에 input_video.mp4라는 파일이 존재해야 합니다. 이 파일은 흑백으로 변환하고자 하는 입력 동영상 파일입니다. 변환된 출력 동영상은 output_video.mp4로 저장됩니다.

또한, 코드에서 사용되는 cv2.VideoCapture 함수는 OpenCV의 VideoCapture 클래스로 동영상 파일을 열기 위해 사용됩니다. 따라서 해당 코드를 실행하기 위해서는 OpenCV도 설치되어 있어야 합니다.

이제 위 코드를 실행하면 입력 동영상 파일이 흑백으로 변환된 출력 동영상 파일이 생성됩니다.

결론

PIL을 사용하여 동영상을 흑백으로 변환하는 방법을 알아보았습니다. PIL은 다양한 이미지 처리 기능을 제공하기 때문에, 다른 이미지 조작에도 유용하게 사용될 수 있습니다.