반응형
단일 색상이 있는 배경이 있는 이미지에서 배경 지우는 방법입니다
동작하려면 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)
이 방법을 응용하여 나중에 배경을 지우고 이미지 합치는 작업을 자동화하려고 합니다
반응형
'코딩 프로그래밍 > PYTHON 파이썬' 카테고리의 다른 글
Django STATIC_ROOT heroku 에서 설정 필수 (0) | 2020.12.01 |
---|---|
Django WhiteNoise configuration is incompatible with WhiteNoise v4.0 오류 해결 방법 (0) | 2020.11.28 |
Python 크롤링 스샷 스크린샷 캡쳐 (0) | 2020.10.24 |
Python Selenium 창 사이즈 설정하기 (0) | 2020.10.23 |
Python 크롤링 selenium 자바스크립트 결과 값 받기 (0) | 2020.10.22 |
댓글