Python

【Python&OpenCV】マスク画像で画像の切り抜き・透過

  • このエントリーをはてなブックマークに追加

OpenCVでマスク画像(黒い部分)で画像を切り抜く

透過画像
元の画像をマスク画像の黒い領域透過させる方法を紹介します。

サンプルコード(Python2と3に対応)

  • img.png(透過させたい画像)
  • mask.png(マスク画像)
#cording:utf-8
import cv2
# 画像の読み込み
img = cv2.imread("img.png")
# マスクをグレースケールで読み込む(第二引数を0)
mask = cv2.imread("mask.png", 0)
# BGRにチャンネル分解
bgr = cv2.split(img)
# 透明チャンネル(マスク)を追加
bgra = cv2.merge(bgr + [mask])
cv2.imwrite("new.png", bgra)

解説

#BGRにチャンネル分解
bgr = cv2.split(img)

変数bgr[b_channel, r_channel, g_channel]という
各カラーチャンネルを成分に持つリストです。
b_channelは2次元のリストで
各成分b_channel[x][y]は、img[x][y]の青の値です。

#透明チャンネル(マスク)を追加
bgra = cv2.merge(bgr + [mask])

bgra[b_channel, r_channel, g_channel, alpha_channel]です。
alpha_channelは画像を透過させるパラメータです。
alpha_channelにマスク画像の値が
入るのでマスク画像の黒い部分が透過されます。

関連記事

https://www.tech-tech.xyz/clip_alpha_image

  • このエントリーをはてなブックマークに追加