본문 바로가기
코딩 프로그래밍/PYTHON 파이썬

파이썬 이용하여 이미지 배경 삭제하기

by 프즈 2020. 11. 10.
반응형

단일 색상이 있는 배경이 있는 이미지에서 배경 지우는 방법입니다

 

동작하려면 cv2가 필요한데요

 

pip install cv2로 설치하는 것이 아니라 아래 명령어로 설치하면 됩니다

 

pip install opencv-python

 

아래 코드는 logo.png 파일을 읽어와서 배경을 지우고 translated.png 파일로 저장하는 예제입니다

 

import cv2
import numpy as np

# 이미지 불러오기
img = cv2.imread('logo.png')

# 변환 graky
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 임계값 조절
mask = cv2.threshold(gray, 250, 255, cv2.THRESH_BINARY)[1]

# mask
mask = 255 - mask

# morphology 적용
# borderconstant 사용
kernel = np.ones((3,3), np.uint8)
mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel)
mask = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel)

# anti-alias the mask
# blur alpha channel
mask = cv2.GaussianBlur(mask, (0,0), sigmaX=2, sigmaY=2, borderType = cv2.BORDER_DEFAULT)

# linear stretch so that 127.5 goes to 0, but 255 stays 255
mask = (2*(mask.astype(np.float32))-255.0).clip(0,255).astype(np.uint8)

# put mask into alpha channel
result = img.copy()
result = cv2.cvtColor(result, cv2.COLOR_BGR2BGRA)
result[:, :, 3] = mask

# 저장
cv2.imwrite('translated.png', result)

이 방법을 응용하여 나중에 배경을 지우고 이미지 합치는 작업을 자동화하려고 합니다

반응형

댓글