[python] OpenCV를 사용하여 이미지에서 동영상 압축하기

이미지에서 동영상을 압축하는 것은 영상 처리나 컴퓨터 비전 작업에서 자주 사용되는 작업 중 하나입니다. OpenCV를 사용하면 Python에서 쉽게 이미지를 동영상으로 변환하고 압축할 수 있습니다. 이번 포스트에서는 OpenCV를 사용하여 이미지에서 동영상을 압축하는 방법에 대해 알아보겠습니다.

OpenCV 설치

먼저, OpenCV를 설치해야 합니다. 아래 명령어를 사용하여 OpenCV를 설치할 수 있습니다.

pip install opencv-python

이미지에서 동영상으로 변환하기

다음은 이미지에서 동영상으로 변환하는 예제 코드입니다.

import cv2
import os

def images_to_video(image_folder, video_name):
    images = [img for img in os.listdir(image_folder) if img.endswith(".jpg")]
    frame = cv2.imread(os.path.join(image_folder, images[0]))
    height, width, _ = frame.shape

    video = cv2.VideoWriter(video_name, cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'), 10, (width, height))

    for image in images:
        video.write(cv2.imread(os.path.join(image_folder, image)))

    cv2.destroyAllWindows()
    video.release()

위의 코드는 images_to_video 함수를 정의하고, 이미지 폴더를 입력받아 해당 이미지들을 동영상으로 변환합니다. 변환된 동영상은 지정한 이름으로 저장됩니다. 변환된 동영상의 FPS는 10으로 설정되어 있으며, 이 값은 필요에 따라 변경할 수 있습니다.

동영상 압축하기

동영상을 압축하는 방법은 VideoWriter의 인자로 사용되는 fourccfps 값을 조정해주는 것입니다.

video_name = "output_video.mp4"
images_to_video("images_folder", video_name)

compressed_video = cv2.VideoWriter("compressed_video.mp4", cv2.VideoWriter_fourcc(*"mp4v"), 30, (width, height))
cap = cv2.VideoCapture(video_name)

while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        break
    compressed_video.write(frame)

cap.release()
compressed_video.release()
cv2.destroyAllWindows()

위의 코드는 앞서 생성한 동영상을 입력으로 받아, 압축된 동영상을 생성합니다. 압축된 동영상의 이름을 compressed_video.mp4로 설정하였으며, FPS는 30으로 설정합니다. 이 값을 조정하여 압축 수준을 변경할 수 있습니다.

이제 이미지에서 동영상으로의 변환과 동영상 압축에 대해 알아보았습니다. OpenCV를 사용하면 이미지와 동영상 처리에 관련된 다양한 작업을 쉽게 수행할 수 있습니다.

참고 자료