[python] 파이썬으로 이미지 배경 제거하기

이미지에서 객체를 추출하고 배경을 제거하는 것은 컴퓨터 비전 및 이미지 처리 분야에서 중요한 작업입니다. 여러 가지 방법이 있지만, 파이썬의 인기 있는 이미지 처리 라이브러리 중 하나인 OpenCV를 사용하여 이미지 배경을 제거하는 방법에 대해 알아보겠습니다.

필요한 패키지 설치하기

우선 OpenCV를 설치해야 합니다. 아래의 명령을 사용하여 OpenCV를 설치할 수 있습니다.

pip install opencv-python

이미지 배경 제거하기

OpenCV를 사용하여 이미지 배경을 제거하는 방법은 다양합니다. 가장 간단한 방법 중 하나는 GrabCut 알고리즘을 사용하는 것입니다. 아래는 간단한 예제 코드입니다.

import cv2
import numpy as np

# 이미지 파일을 읽어온다
image = cv2.imread('input_image.jpg')

# ROI(Region of Interest) 선택을 위한 사각형 좌표 설정
rect = (50, 50, 450, 290)

# 초기 마스크 생성
mask = np.zeros(image.shape[:2], np.uint8)

# GrabCut 알고리즘을 실행하여 배경 제거
bgdModel = np.zeros((1, 65), np.float64)
fgdModel = np.zeros((1, 65), np.float64)
cv2.grabCut(image, mask, rect, bgdModel, fgdModel, 5, cv2.GC_INIT_WITH_RECT)

# 적절한 마스크 생성
mask2 = np.where((mask == 2) | (mask == 0), 0, 1).astype('uint8')

# 이미지에 적절한 마스크 적용
image = image * mask2[:, :, np.newaxis]

# 결과 이미지를 파일로 저장
cv2.imwrite('output_image.png', image)

위 코드는 GrabCut 알고리즘을 사용하여 이미지의 배경을 제거하는 간단한 예제입니다. 이미지 파일을 읽어와서 ROI를 선택하고, GrabCut 알고리즘을 실행하여 배경을 제거한 후 결과 이미지를 파일로 저장합니다.

결론

이렇게 파이썬과 OpenCV를 사용하여 이미지의 배경을 제거할 수 있습니다. 이미지 처리와 컴퓨터 비전을 다루는 데에는 다양한 기술과 알고리즘이 존재하므로, 원하는 결과물에 따라 적절한 방법을 선택하여 사용할 수 있습니다.

참고 자료