[파이썬] opencv-python 크로마키 및 그린스크린 효과

소개

크로마키(Chroma Key)는 영상 또는 이미지에서 특정 색상을 제거하고 다른 색상으로 대체하는 기술입니다. 주로 그린스크린(Green Screen)이라고 불리는 배경을 사용하여 배경을 제외한 객체만을 추출하는데 사용됩니다. OpenCV-Python은 영상 처리 및 컴퓨터 비전 작업을 위한 매우 강력하고 유연한 라이브러리입니다. 이 블로그 포스트에서는 OpenCV-Python을 사용하여 크로마키 효과를 구현하는 방법을 살펴보겠습니다.

필요한 패키지 설치

이 튜토리얼에서는 OpenCV를 사용하기 위해 opencv-python 패키지를 설치해야 합니다. 아래의 명령어를 사용하여 설치할 수 있습니다.

pip install opencv-python

크로마키 효과 구현하기

아래의 예제 코드는 이미지에서 그린스크린 효과를 구현하는 방법을 보여줍니다.

import cv2
import numpy as np

def chroma_key(image_path, background_path, key_color):
    # 이미지 로드
    image = cv2.imread(image_path)
    background = cv2.imread(background_path)

    # 크로마키 효과를 위한 HSV 색상 공간으로 변환
    hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)

    # 키 색상 범위 지정
    lower_color = np.array(key_color[0], dtype=np.uint8)
    upper_color = np.array(key_color[1], dtype=np.uint8)

    # 키 색상 마스크 생성
    mask = cv2.inRange(hsv, lower_color, upper_color)

    # 마스크를 사용하여 크로마키 효과 적용
    result = cv2.bitwise_and(image, image, mask=mask)

    # 크로마키 영역을 배경으로 대체
    background_mask = cv2.bitwise_not(mask)
    background = cv2.bitwise_and(background, background, mask=background_mask)
    result = cv2.add(result, background)

    return result

# 이미지와 배경 경로 설정
image_path = "image.jpg"
background_path = "background.jpg"

# 키 색상 범위 설정 (BGR 형식)
key_color = ([0, 100, 0], [100, 255, 100])

# 크로마키 효과 적용
result = chroma_key(image_path, background_path, key_color)

# 결과 이미지 출력
cv2.imshow("Chroma Key Effect", result)
cv2.waitKey(0)

위의 코드는 chroma_key 함수를 정의하고, 입력 이미지와 배경 이미지를 로드한 후 HSV 색상 공간으로 변환합니다. 그런 다음 지정된 키 색상 범위에 대한 마스크를 생성하여 크로마키 효과를 적용합니다. 마지막으로 배경 이미지와 크로마키 영역을 결합하여 최종 결과를 생성합니다.

이제 마지막으로 image.jpgbackground.jpg에 원하는 이미지 파일 경로를 지정하고, 원하는 키 색상 범위를 설정하여 크로마키 효과를 적용할 수 있습니다.

결론

이 블로그 포스트에서는 OpenCV-Python을 사용하여 크로마키 효과를 구현하는 방법을 살펴보았습니다. 크로마키는 영상 또는 이미지 처리 작업에서 매우 유용하게 사용될 수 있으며, OpenCV-Python은 이를 간단하고 효과적으로 구현할 수 있는 도구로 제공됩니다. OpenCV-Python의 다양한 기능을 활용하여 다른 영상 처리 작업에도 도전해 보세요.