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

이미지 처리를 위한 파이썬 라이브러리인 OpenCV는 다양한 기능을 제공합니다. 그 중 하나는 이미지에서 동영상 프레임을 추출하고 크롭(crop)할 수 있는 기능입니다. 이번 포스트에서는 OpenCV를 활용하여 이미지에서 동영상을 크롭하는 방법에 대해 알아보겠습니다.

필요한 라이브러리 설치

먼저, OpenCV를 사용하기 위해 아래 명령어를 통해 필요한 라이브러리를 설치해야 합니다.

pip install opencv-python

이미지에서 동영상 프레임 추출

먼저, 이미지에서 동영상의 프레임을 추출하는 방법을 알아보겠습니다. 아래의 코드는 이미지에서 동영상을 읽어와 특정 프레임을 추출하는 예제입니다.

import cv2

def extract_frame(image_path, frame_number):
    # 이미지에서 동영상 읽어오기
    video = cv2.VideoCapture(image_path)

    # 특정 프레임으로 이동
    video.set(cv2.CAP_PROP_POS_FRAMES, frame_number)

    # 프레임 읽어오기
    success, frame = video.read()

    # 이미지 저장
    if success:
        cv2.imwrite("frame.jpg", frame)
        print("프레임 추출이 완료되었습니다.")
    else:
        print("프레임 추출에 실패하였습니다.")

    # 동영상 종료
    video.release()

# 이미지 경로와 추출할 프레임 번호 입력
image_path = "video.mp4"
frame_number = 100

# 프레임 추출 함수 호출
extract_frame(image_path, frame_number)

위 코드를 실행하면 frame.jpg라는 이미지 파일이 생성되며, 입력한 이미지에서 지정한 프레임이 추출됩니다.

이미지에서 동영상 프레임 크롭

이번에는 이미지에서 동영상 프레임을 크롭하는 방법에 대해 알아보겠습니다. 아래의 코드는 이미지에서 동영상을 읽어와 특정 영역을 크롭하는 예제입니다.

import cv2

def crop_frame(image_path, x, y, width, height):
    # 이미지에서 동영상 읽어오기
    video = cv2.VideoCapture(image_path)

    # 첫 프레임 읽어오기
    success, frame = video.read()

    # 지정한 영역 크롭
    cropped_frame = frame[y:y+height, x:x+width]

    # 크롭된 이미지 저장
    cv2.imwrite("cropped_frame.jpg", cropped_frame)
    print("프레임 크롭이 완료되었습니다.")

    # 동영상 종료
    video.release()

# 이미지 경로와 크롭할 영역 좌표 및 크기 입력
image_path = "video.mp4"
x = 100
y = 100
width = 200
height = 200

# 프레임 크롭 함수 호출
crop_frame(image_path, x, y, width, height)

위 코드를 실행하면 cropped_frame.jpg라는 이미지 파일이 생성되며, 입력한 이미지에서 지정한 영역이 크롭됩니다.

위의 예제 코드를 활용하여 이미지에서 동영상 프레임을 추출하고 크롭할 수 있습니다. OpenCV의 다양한 기능을 활용하여 이미지 처리에 유용한 프로그램을 개발해보세요.

참고 자료