[Python+OpenCV] 이미지의 투명 부분을 흰색으로 칠합니다.

소개



이미지의 투명 부분을 흰색으로 칠하는 프로그램의 샘플입니다.
그물에서 살펴보면 for 문으로 픽셀을 스캔하거나 RGB를 얻은 후 알파 채널을 결합하는 방법을 살펴 보았습니다.
이러한 복잡한 처리를 하지 않고 몇 줄로 구현할 수 있었으므로, 자신용의 메모도 겸해 기사에 남겨 둡니다.

환경


  • Python 3.7.7
  • opencv_python 4.4.0.42
  • numpy 1.18.1

  • 실행 예



    아래의 투명 이미지를 검정색으로 칠합니다(흰색으로 칠하면 변화를 모르기 때문에).


    소스 코드


    # -*- coding:utf-8 -*-
    import cv2
    import numpy as np
    
    # 入力画像を読み込み(-1指定でαチャンネルも読み取る)
    img = cv2.imread("kangaru.png", -1)
    # αチャンネルが0となるインデックスを取得
    # ex) ([0, 1, 3, 3, ...],[2, 4, 55, 66, ...])
    # columnとrowがそれぞれ格納されたタプル(長さ2)となっている
    index = np.where(img[:, :, 3] == 0)
    # 白塗りする
    img[index] = [255, 255, 255, 255]
    # 出力
    cv2.imwrite("output.png", img)
    

    결론



    α채널의 취득도, 투과 부분의 백칠도 간단하게 실장할 수 있었네요.

    좋은 웹페이지 즐겨찾기