OpenCVで部分的に透過な単色を重ねたい

OpenCVで部分的に透過な緑色を重ねて塗りたい場合の実装方法を解説します。

images/cards/lena.webp

目次

OpenCV で部分的に透過な単色を重ねたい

OpenCVで部分的に透過な単色で塗りたい

Python での実装方法

import numpy as np
import cv2

img = cv2.imread("lena.png")
mask = np.zeros(img.shape[0:2], np.uint8)
green = np.zeros(img.shape, np.uint8)
green[:,:,1] = 255

cv2.circle(mask, center=(300, 300), radius=100, color=255,thickness=-1)

# 透過描画したいマスク領域
mask_area = np.where(mask == 255)

# アルファ値(透過度合い)
alpha = 0.3
img[mask_area] = img[mask_area] * (1-alpha) + green[mask_area] * alpha

cv2.imwrite("lena_converted.png", img)