[DIP] alpha 채널과 검은색 글씨 처리 with convertScaleAbs

2024. 9. 16. 15:41·Programming/DIP
728x90
728x90

OpenCV의 imshow는 기본적으로 투명 배경 을 검은 색으로 보여주기 때문에,
png 파일의 검은색 글자는 안보임.

 

이를 위해서는 배경과 전경을 구분하는 mask를 만들고, 배경을 흰색과 같이 원하는 색으로 처리해줘야 함.

Code

다음 코드를 참고.

import cv2
import numpy as np
url = 'https://raw.githubusercontent.com/dsaint31x/OpenCV_Python_Tutorial/master/images/opencv_logo.png'

import requests

t0 = requests.get(url)# requests.models.Response 
t1 = t0.content       # bytes (immutable) 
t2 = bytearray(t1)    # bytearray (mutable)
t3 = np.asarray(t2, dtype=np.uint8) #ndarray
img = cv2.imdecode(t3, cv2.IMREAD_UNCHANGED)

cv2.imwrite('opencv_logo.png', img)

print(f'{img.shape=}')
# cv2에서는 투명 배경을 검은색으로 표시하는데, 이 경우 검정색 글자가 안보임.
# 때문에 alpha 채널을 읽어서 투명 배경을 흰색으로 변환.
if len(img) > 3 and img.shape[2] == 4:
    bgr = img[:,:,:3]
    alpha = img[:,:,3]

    w_bg = np.ones_like(bgr, dtype=np.uint8) * 255
    mask = alpha[:,:,np.newaxis] / 255.
    img0 = bgr*mask + w_bg*(1.-mask)
    img1 = cv2.convertScaleAbs(bgr*mask + w_bg*(1-mask))
else:
    img1 = img

cv2.imshow('test1', img1)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

cv2.convertScaleAbs()

위에서 사용된 cv2.convertScaleAbs()는

$$\text{dst}(i,j) = \text{saturate}(| \alpha \text{src}(i,j) + \beta|)$$

  • cv2에서 위의 이미지 연산 후 결과값을
    uint8 형식으로 변환.
    • 절대값 처리
    • 밝기($\beta$)와 대비($\alpha$ 조정을 하는데 사용됨.
  • saturate는 [0,255]의 범위로 값을 제한한다.

주로 연산으로 처리후 보여주기 직전에 호출되는 함수임 (자동 조정은 아님).


같이보면 좋은 자료들

2024.09.23 - [Programming/DIP] - [DIP] cv2.convertSacleAbs(): contrast, brightness 수동조정

 

[DIP] cv2.convertSacleAbs(): contrast, brightness 수동조정

cv2.convertScaleAbs()이 함수는 주로 image의 brightness(밝기)와 contrast(대비)를 조절하는데 사용됨.alpha parameter로 contrast를 조절.beta parameter로 brightness를 조절.기본 구문dst = cv2.convertScaleAbs(src[, dst[, alpha[, b

dsaint31.tistory.com

 

2022.09.21 - [Programming/DIP] - [DIP] opencv에서 URL로 이미지 로딩

 

[DIP] opencv에서 URL로 이미지 로딩

request 모듈을 활용하면 간단하게 URL에서 이미지 로딩이 된다.reauest로 url을 get메서드로 가져옴.request.content 는 immutable bytes이므로 이를 bytearray로 변경.해당 bytearray 객첼르 통해 ndarray를 얻어냄: 일

dsaint31.tistory.com

 

2022.09.21 - [Programming/DIP] - [DIP] Color Space or Color Model

 

[DIP] Color Space or Color Model

Color Space(색 공간)은 "사람의 눈"이 3개의 color에 반응하는 감각세포(cone cell)를 통해 색을 인식하는 것에 기반하여 Tristimulus values (X,Y,Z)와 각각의 color를 연관시키는 방식처럼 "특정 공간의 위치"에

dsaint31.tistory.com


 

728x90

'Programming > DIP' 카테고리의 다른 글

[DIP] Image 다루기: cv2-기본편 1 (Summary)  (0) 2024.09.22
[DIP] cv2.imwrite  (1) 2024.09.22
[CV] cv2.imread()  (4) 2024.09.16
[DIP] plt.imshow: matplotlib.pyplot  (1) 2024.09.16
[DIP] cv2.imshow 사용예  (2) 2024.09.16
'Programming/DIP' 카테고리의 다른 글
  • [DIP] Image 다루기: cv2-기본편 1 (Summary)
  • [DIP] cv2.imwrite
  • [CV] cv2.imread()
  • [DIP] plt.imshow: matplotlib.pyplot
dsaint31x
dsaint31x
    반응형
    250x250
  • dsaint31x
    Dsaint31's blog
    dsaint31x
  • 전체
    오늘
    어제
    • 분류 전체보기 (787)
      • Private Life (15)
      • Programming (206)
        • DIP (116)
        • ML (35)
      • Computer (120)
        • CE (54)
        • ETC (33)
        • CUDA (3)
        • Blog, Markdown, Latex (4)
        • Linux (9)
      • ... (368)
        • Signals and Systems (115)
        • Math (176)
        • Linear Algebra (33)
        • Physics (43)
        • 인성세미나 (1)
      • 정리필요. (61)
        • 의료기기의 이해 (6)
        • PET, MRI and so on. (7)
        • PET Study 2009 (1)
        • 방사선 장해방호 (5)
        • 방사선 생물학 (3)
        • 방사선 계측 (9)
        • 기타 방사능관련 (3)
        • 고시 (9)
        • 정리 (18)
      • RI (0)
      • 원자력,방사능 관련법 (2)
  • 블로그 메뉴

    • Math
    • Programming
    • SS
    • DIP
  • 링크

    • Convex Optimization For All
  • 공지사항

    • Test
    • PET Study 2009
    • 기타 방사능관련.
  • 인기 글

  • 태그

    random
    signals_and_systems
    Term
    SS
    Optimization
    SIGNAL
    Vector
    Programming
    Probability
    function
    linear algebra
    인허가제도
    Python
    math
    ML
    opencv
    signal_and_system
    numpy
    cv2
    fourier transform
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
dsaint31x
[DIP] alpha 채널과 검은색 글씨 처리 with convertScaleAbs
상단으로

티스토리툴바