[python] OpenCV를 사용하여 이미지에서 동영상 필터링하기

이미지와 동영상 처리를 위해 널리 사용되는 OpenCV (Open Source Computer Vision Library)는 Python에서도 사용할 수 있습니다. OpenCV를 사용하면 동영상에서 원하는 작업을 수행하는 다양한 필터를 적용할 수 있습니다. 이번 포스트에서는 OpenCV를 사용하여 이미지에서 동영상 필터링을 하는 방법을 설명하겠습니다.

필요한 라이브러리 설치

먼저 OpenCV를 설치하는 것부터 시작합니다. 아래의 명령어를 사용하여 OpenCV를 설치합니다.

pip install opencv-python

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

이미지를 처리하기 전에, 먼저 이미지를 동영상으로 변환해야 합니다. 아래의 코드를 사용하여 이미지를 동영상으로 변환할 수 있습니다.

import cv2

def image_to_video(input_image_path, output_video_path, fps):
    image = cv2.imread(input_image_path)
    height, width, _ = image.shape

    video_writer = cv2.VideoWriter(output_video_path, cv2.VideoWriter_fourcc(*"MJPG"), fps, (width, height))

    video_writer.write(image)
    video_writer.release()

# 이미지를 동영상으로 변환
image_to_video("input_image.jpg", "output_video.avi", 30)

위의 코드에서 input_image_path는 입력 이미지 파일의 경로를, output_video_path는 출력 동영상 파일의 경로를, fps는 동영상의 초당 프레임 수를 나타냅니다.

동영상 필터링하기

이제 이미지를 동영상으로 변환했으므로, 동영상에 필터를 적용해보겠습니다. 아래의 코드는 이미지에 그레이스케일 필터를 적용한 후 동영상으로 저장하는 예제입니다.

import cv2

def video_filter(input_video_path, output_video_path):
    video = cv2.VideoCapture(input_video_path)
    fps = video.get(cv2.CAP_PROP_FPS)
    width = int(video.get(cv2.CAP_PROP_FRAME_WIDTH))
    height = int(video.get(cv2.CAP_PROP_FRAME_HEIGHT))

    video_writer = cv2.VideoWriter(output_video_path, cv2.VideoWriter_fourcc(*"MJPG"), fps, (width, height), isColor=False)

    while True:
        ret, frame = video.read()
        if not ret:
            break
        
        gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        video_writer.write(gray_frame)
    
    video.release()
    video_writer.release()

# 동영상 필터링
video_filter("input_video.avi", "output_filtered_video.avi")

위의 코드에서 input_video_path는 입력 동영상 파일의 경로를, output_video_path는 출력 동영상 파일의 경로를 나타냅니다. 해당 코드는 입력 동영상의 각 프레임을 그레이스케일로 변환한 후 동영상으로 저장합니다.

결론

OpenCV를 사용하면 이미지에서 동영상으로의 변환과 동영상 필터링을 쉽게 수행할 수 있습니다. 이번 포스트에서는 이미지를 동영상으로 변환하고, 그레이스케일 필터를 적용하여 동영상으로 저장하는 예제를 다루었습니다. OpenCV를 활용하여 다양한 동영상 처리 작업을 수행해보세요!